簡體   English   中英

頁面中的data-id更改后,如何在jQuery中選擇data-id?

[英]How to select data-id in jQuery after the data-id is changed in the page?

http://jsfiddle.net/V76T7/

 $('.click').click(function() {
  id = $(this).data('id');
  alert(id);
  $('.click').attr('data-id' , id+1);
 });

如鏈接中所示,我希望每次單擊按鈕時data-id都增加1。 當您單擊它時,data-id確實確實增加到了2,並且可以在Chrome中使用“檢查元素”看到它。但是,當我下次單擊它時,彈出窗口仍然是1,而不是預期的“ 2”。 ?

由於您正在使用.data來獲取值,因此它將被導入jQuery.cache ,因此將來的.data()獲取將從那里而不是從屬性開始。

因此,如果要下一個“獲取”來獲取更新的值,則需要使用.data()更新。

$('.click').click(function() {
    id = $(this).data('id');
    alert(id);
    $('.click').data('id' , id+1);
});

或更好的方法是,只需使用.attr()因為它更快,並且具有較少的內存開銷(因為該值在jQuery.cache不重復)。

$('.click').click(function() {
    id = $(this).attr('data-id');
    alert(id);
    $('.click').attr('data-id' , id+1);
});

我建議僅在需要保留原始數據或正在處理更復雜的對象(如從JSON值創建的對象.data()時才使用.data()

  1. 嘗試使用相同的方法來獲取和設置數據屬性( .attr.data
  2. 通過將var放在id前面,避免使用隱式聲明的全局變量。

因此,您的代碼應如下所示:

$('.click').click(function() {
     var id = $(this).data('id');
     alert(id);
     $(this).data('id', id+1);
});

示范

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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