[英]Is it possible to do “.value +=” in JQuery?
經典的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")
你可以回到原來的DOM元素。
$("#abc").get(0).value += "test";
否則,你必須寫一個插件
$.fn.appendVal = function (newPart) {
return this.each(function(){ $(this).val( $(this).val() + newPart); });
};
$("#abc").appendVal("test");
從jQuery 1.4開始,可以將函數傳遞給.val()
,它將當前值作為第二個參數:
$("#abc").val(function(i, val) {
return val + "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()
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
(function($){
$.fn.valInc = function(vadd)
{
var val = $(this).val() + '' + vadd;
$(this).val(val);
}
})(jQuery);
$(function(){
$("#tst").valInc('test 2');
});
</script>
</head>
<body>
<input id='tst' value="test" />
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.