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

mar*_*cgg 18 javascript jquery

经典的javascript:

var myvar = document.getElementById("abc");
abc.value += "test";
abc.value += "another test";
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$("#abc").val($("#abc").val()+"test");
$("#abc").val($("#abc").val()+"another test");
Run Code Online (Sandbox Code Playgroud)

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

像这样的东西会很棒:

 $("#abc").valueAttribute += "test"
 $("#abc").val().content += "test"
 $("#abc").val().add("test")
Run Code Online (Sandbox Code Playgroud)

Pat*_*ney 24

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

 $("#abc").get(0).value += "test";
Run Code Online (Sandbox Code Playgroud)

否则,你必须写一个插件

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

 $("#abc").appendVal("test");
Run Code Online (Sandbox Code Playgroud)

  • 插件是很好的解决方案,但它不应该返回this.each(function(){$(this).val($(this).val + newPart);}); ---保留链能力并在需要时应用于多个元素? (3认同)

Fel*_*ing 13

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

$("#abc").val(function(i, val) {
    return val + "test";
});
Run Code Online (Sandbox Code Playgroud)