我正在使用jquery和ajax。
我有一些div有id =“apple-23”,id =“apple-45”和...
我有一些像这样的jquery代码:
$("[id^=apple]").click(function(){
elid = $(this).attr('id').split("-");
pid = elid[1];
alert(pid);
});
这些代码适用于这些div。
但是ajax也会返回类似的id,类似id =“apple-61”等id模式。 但jquery代码不适用于这些ajax生成的div。
为什么会这样?我该如何解决呢?
答案 0 :(得分:5)
问题是您在元素存在之前绑定事件。
使用live代替(假设您使用的是jQuery 1.3 +):
$("[id^=apple]").live("click", function(){
elid = $(this).attr('id').split("-");
pid = elid[1];
alert(pid);
});
答案 1 :(得分:3)
您可以使用.delegate()
或.live()
来处理尚不存在的元素上的事件。
如果这些div有一个共同的父级,那么使用.delegate()
而不是.live()
会更有效率(请参阅here)。
$("#divContainer").delegate("[id^=apple]", "click", function(){
elid = $(this).attr('id').split("-");
pid = elid[1];
alert(pid);
});