2012-06-13 103 views
2

標記:JQuery的:從子元素獲取數據

<ul> 
<li><a href="#" class="item-list" data-id="1">Link 1</a></li> 
<li><a href="#" class="item-list" data-id="2">Link 2</a></li> 
<li><a href="#" class="item-list" data-id="3">Link 3</a></li> 
</ul> 

jQuery中,我會選擇鏈接1,它應該能夠獲取鏈接1的數據-ID。我試過

$('.item-list').click(function(){ 
var link = $(this); 
alert($(this).data('id')); 
}); 

它沒有任何結果。

哦。該列表在加載頁面後生成。我正在查詢數據庫以獲取列表。而且,列表也可以改變,這取決於用戶如何過濾dB。

謝謝。

回答

4

如果列表是在頁面加載後生成的,則.click綁定可能不起作用。也許你可以試試.live,像這樣:

$('.item-list').live('click', function(){ 
    var link = $(this); 
    alert($(this).data('id')); 
}); 

編輯:

我似乎總是:)忘記在jQuery 1.7,.live()已經過時了。您應該使用.on()像這樣:

$("body").on("click",".item-list",function(){ 
    var link = $(this); 
    alert($(this).data('id')); 
}); 
+1

因爲jQuery的1.7 ** .live()**已被棄用。使用**。on()**代替。 – Th0rndike

+1

我只是在你的評論期間編輯:) – bjornruysen

+0

老兄這是錯誤的使用方法,如果內容加載後將事件附加到DOM – 2012-06-13 08:27:30

2

使用。對,因爲現場已被棄用,也把你的代碼中document.ready()

$(function(){ //short form of document.ready   
    $("body").on("click",".item-list",function(){ 
     var link = $(this); 
     alert($(this).data('id')); 
    }); 
}); 
+0

我的例子並不完全是我的數據結構。如果它是.item-list在表中? –

+0

沒有問題,直到.item-list在體內 – 2012-06-13 08:34:03

0
$('ul').on('click', '.item-list', function() { 
    var link = $(this); 
    alert(link.attr('data-id')); 
}); 

看看是否能工程

+2

不是link.attr('data-id')那麼? – akalucas