jQuery .on()给了我错误的“这个”

时间:2013-08-08 04:04:27

标签: jquery event-handling targeting

可能是我的额头解决方案,但是:

<div id="foo">
   <!-- this will all be replaced periodically via AJAX -->
   <p id="bar_1">click me</p>
   <p id="bar_2">click me</p>
   <p id="bar_3">click me</p>
   <!-- end AJAXed section -->
</div>

$('#foo').on(click,'p',function(){
   alert($(this).attr('id'));
   //returns "foo"
});

点击任意p提醒“foo”。如何返回“bar_ n ”,即点击的p的ID?

我的目标是外部div,因为它是可靠的,不会通过AJAX替换。在.on()方法中,我正在定位(子目标?)内部p,因为这就是我真正想要将点击处理程序绑定到的内容。所有p将定期更换,并且它们的绑定丢失,因此,我不能简单地说$('p').on(click...)。我可以吗?

2 个答案:

答案 0 :(得分:3)

你需要在这里添加引用click,例如 - 'click',然后一切都会好的,小提琴已经由@Arun提交。

试试这个 -

$('#foo').on('click','p',function(){
   alert($(this).attr('id'));
   //returns "foo"
});

答案 1 :(得分:0)

两种解决方案:

替换

$('#foo').on('click','p',function(){

$('#foo p').on('click',function(){

(如前所述,您需要点击周围的引号)。

或者,替换

alert($(this).attr('id'));

alert($(event.target).attr('id'));

我无法保证第一种方法能够很好地与AJAX加载,但我相信第二种方法应该可以正常工作。