是否可以在JQuery中执行“.value + =”?

经典的javascript:

var myvar = document.getElementById("abc"); abc.value += "test"; abc.value += "another test"; 

jQuery的:

 $("#abc").val($("#abc").val()+"test"); $("#abc").val($("#abc").val()+"another test"); 

有没有办法让我的Jquery更漂亮,也许有一个隐藏的+ =函数,我可以使用? 我知道.val()不是属性,但我觉得必须有一种方法可以使这段代码看起来更漂亮……

像这样的东西会很棒:

  $("#abc").valueAttribute += "test" $("#abc").val().content += "test" $("#abc").val().add("test") 

从jQuery 1.4开始,可以将函数传递给.val() ,它将当前值作为第二个参数:

 $("#abc").val(function(i, val) { return val + "test"; }); 

你可以回到原来的DOM元素。

  $("#abc").get(0).value += "test"; 

否则,你必须写一个插件

  $.fn.appendVal = function (newPart) { return this.each(function(){ $(this).val( $(this).val() + newPart); }); }; $("#abc").appendVal("test"); 

我从来没有遇到过这样的事情,但并不意味着它不存在。

我通常只将val()存储在临时变量中并对其进行操作,然后在单独的行中调用val(temp)。 它将操作扩展到三行或更多行,但它仍然比.val(.val() + "") ,IMO更具可读性。 如果你有一个更复杂的表达式,它也可以比+ =更好地扩展。

 var temp = $(".abc").val(); temp += "test"; $(".abc").val(temp); 

$()返回一个选择; 它不会返回实际的结果对象(尽管在实践中,它只返回实际对象的列表)。 如果要改变对象的.value属性,可以执行以下操作:

 $('.abc').each(function(){ this.value += foo; }); 

如果您愿意,可以创建对选择进行操作的函数,例如.add() ,可以像这样实现:

 jQuery.fn.extend({ add: function(k,v) { this[k](this[k]()+v); } }); 

然后可以像这样使用:

 $('.abc').add('val', foo); 

…但我不认为这比使用$().each()更好$().each()

    Untitled Document