2011-05-05 111 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 (我不能相信他的答案,因此参考)。