簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM