是否可以在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