2013-02-13 53 views
0

我有以下的jQuery代碼:jQuery |數據屬性更新問題

這是HTML:

<div 
    class="continueReading" 
    data-skip="0" 
    data-categories="22,243" 
    data-is="single" 
    data-s="cd1f2f7a7d" 
    data-list="latestNews-sidebar-1" 
> 
    <a href="javascript:void();" class="latestNewsWidgetMoreLink">get more</a> 
    <a href="javascript:void();" class="latestNewsWidgetMoreButton">»</a> 
</div> 

和jQuery是這樣的:

$('.latestNewsWidgetMoreLink, .latestNewsWidgetMoreButton').click(
    function() 
    {  
     total_items = 10; 
     $(this).parent('div').attr('data-skip', total_items); 
    } 
); 

,但似乎不起作用。有人可以幫助我嗎?這段代碼中是否有錯誤?

注意:我也嘗試下面的代碼,沒有運氣:

total_items = 10; 
$(this).parent('div').data('skip', total_items); 
+3

請告訴我們HTML – Adil 2013-02-13 09:08:17

+1

作爲阿迪爾說,向我們展示了HTML。同時向我們展示圍繞這幾行的功能 - 如果我們不知道代碼中的「this」是什麼,那麼很難解決問題。 – 2013-02-13 09:09:58

+1

如果將數據屬性的值設置爲相同的東西,您希望知道它是否有效? – 2013-02-13 09:13:07

回答

1

該代碼適用於我的this example jsFiddle。我懷疑代碼執行得太早,結果事件處理程序沒有被綁定到元素上(因爲它們還不存在)。嘗試在$(document).ready()調用它包裹:

$(document).ready(function() { 
    $('.latestNewsWidgetMoreLink, .latestNewsWidgetMoreButton').click(function() { 
     total_items = 10; 
     $(this).parent('div').data('skip', total_items); 
    }); 
}); 

這將確保代碼不會執行,直到DOM準備好,所以元素仍將存在,並可以有事件處理程序的約束。

請注意,我做了一些調整:

  1. 移除了<a>元素的href屬性分號 - 是導致一個JavaScript語法錯誤
  2. 使用.data() jQuery的功能,而比.attr()
1

從兩個鏈接刪除javascript:void();,然後檢查HTML DIV與螢火併點擊鏈接,它將設置data-skip="10";

1

該代碼工作正常。見this。第二個鏈接不起作用,因爲你已經忘記了jQuery選擇器中的點 。所以,你必須改變

$('.latestNewsWidgetMoreLink, latestNewsWidgetMoreButton') 

$('.latestNewsWidgetMoreLink, .latestNewsWidgetMoreButton') 
+0

對不起@pbaris,但我在上面的代碼中有一個錯誤。在我真實的代碼中,我有(。)在latestNewsWidgetMoreButton之前。感謝你的幫助 :) – 2013-02-13 09:34:45