2014-01-23 34 views
0

http://jsfiddle.net/V76T7/如何在頁面中更改數據ID後在jQuery中選擇數據ID?

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

如圖中的鏈接,我想要的數據-ID按1,增加我按一下按鈕。當你點擊它時,data-id確實增加到了2,你可以在Chrome瀏覽器中使用'Inspect Element'查看它,但是當我點擊它時,彈出窗口仍然是1,但不是預期的「2」。 ?

回答

1

由於您使用.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); 
}); 

我建議只使用.data()這個如果你需要保留原來的,或者如果你有像那些從JSON值創建更復雜的對象工作。

+0

您必須使用parseInt(id)進行求和而不是拼接 – Cyrus

+0

@Cyrus:True。不直接相關,但它需要被固定以獲得'2'結果。 –

0
  1. 嘗試使用兩種獲取和放置varid正面設置了數據屬性(或者.attr.data
  2. 避免使用隱式聲明的全局變量的方法相同。

所以你的代碼應該是這樣的:

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

Demonstration

相關問題