代码之家  ›  专栏  ›  技术社区  ›  John Strickler

在.val()、.text()等中访问元素的值,而不进行双重选择或缓存

  •  2
  • John Strickler  · 技术社区  · 14 年前

    有没有一种简单的方法可以引用调用.val()或.text()的元素值,而不必进行双重选择或缓存?

    //NO
    $(this).val($(this).val() + 'something');
    
    //NO
    var $this;
    $this.val($this.val() + 'something');
    

    相反,请使用.replace()中的$&标记

    'some string'.replace('str', '$&123');
    //results - 'some str123ing'
    

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  8
  •   Nick Craver    14 年前

    您可以将函数传递给 .val() ,就像这样:

    $(this).val(function(i, currentVal) { return currentVal + 'something'; });
    //another example:
    $(this).val(function(i, cVal) { return cVal.replace('str', '$&123'); });
    

    i 是索引和 currentVal 是什么 $(this).val() 会得到你的。只需在该函数中返回您希望的新值。