可能是我的额头解决方案,但是:
<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...)
。我可以吗?
答案 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加载,但我相信第二种方法应该可以正常工作。