2011-05-05 18 views
1

我有兩個動態生成(從PHP文件)divs。這個div是這樣的:JQUERY如何從動態div獲取id名稱?

<div id="x" class="myclass"></div> 
<div id="y" class="myclass"></div> 

其中X和Y是從一個PHP文件動態生成的數字。如何獲取此id(數字)時,例如,我點擊此divs?

我已經試過這樣:

$('.myclass').click(function(){ 

alert(this.attr("id")); 

}); 

但這種方式我只得到了第一個ID(myclasses的第一個元素)。

我該如何解決?

+3

你確定這個id不同嗎?你的代碼應該從目光看它,也許嘗試改變這個'alert($(this).attr('id'));' – Jimmy 2011-05-05 18:01:58

+0

你是否試圖獲得類'myclass'的所有id的元素? – PeeHaa 2011-05-05 18:04:13

回答

7

試試這個:

$('.myclass').live('click', function() { 
    alert(this.id); //or alert($(this).attr('id'))); for the jQuery method 
}); 

使用$.live()功能綁定事件將事件綁定到那些尚未存在的元素,所以當你添加新的元素div.myclass動態,他們將被綁定爲好。


請注意:.live()現在已過時,使用.delegate().on()代替。

$(document).on('click', '.myclass', function() { 
    alert(this.id); 
}); 
7

你需要使用jQuery對象

$('.myclass').click(function(){ 
    alert($(this).attr("id")); 
}); 

此外,不要只使用一個號碼的ID。我認爲現在只有HTML5允許它。

這裏有一個演示:http://jsfiddle.net/SY3m7/

+0

感謝它的偉大工作 – gaggina 2011-05-05 18:14:56

1

HTML元素的ID是無效的開頭數字。

因此,請嘗試生成以「div-10002」之類的字符開頭的字母數字標識。

在這兩種情況下,以獲得點擊的元素的ID試試這個:

$('.myclass').live("click", function(){ 
alert(this.id); 
}); 

$('.myclass').live("click", function(){ 
alert($(this).attr("id")); 
}); 
1

試試這個 -

$('.myclass').click(function() { 
    alert($(this).attr("id")); 
}); 
+0

糟糕。抱歉!修正它 – 2011-05-05 18:11:11

+1

很酷,投票逆轉+1 – JohnP 2011-05-05 18:14:15

0

是否想獲取與該類相關的所有ID?

試試這個:

$(".myClass").each(function(){alert($(this).attr("id"));}); 

你必須調用上述在另一個函數。

HTH

0
$("#container").on("Events",$(selector),function(e){ 
    // this will have jquery reference to the container DOM element hence use event.target to capture the element. 
    var id=$(e.target).attr("id"); 
}); 

JonDoeCA - 給了這個答案的Similar question (我不能相信他的答案,因此參考)。