我正在尝试为列表中“li”元素中的不同元素设置不同的委托单击处理程序。例子:
<ul id='myList'>
<li>
<p>First item.</p>
<button>button1</button>
<button>button2</button>
</li>
<li>
<p>Second item.</p>
<button>button1</button>
<button>button2</button>
</li>
</ul>
当用户单击 button1 (任何项目)时,我想获取该事件并停止传播(对于 button2 实例也是如此)。单击父 li 元素的用户将是一个不同的处理程序:
$('#myList').delegate('li', 'click', function() {
alert("You clicked a parent <li> item!");
});
$('#myList').delegate('button', 'click', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
alert("You clicked a button (but which one?)!");
});
所以一个问题是,我如何为 button1 实例设置一个委托,而另一个用于 button2 实例?上例中的第二个委托在单击按钮时会触发,但 event.stopPropagation() 似乎无法正常工作,因为父 li 项的处理程序仍会被调用,
- - - 更新 - - - - - - -
还尝试调用 event.stopImmediatePropagation(),但没有效果,父处理程序仍然被调用。
谢谢