我将元素动态添加到 div 'wrap' 中,例如:
<div id='wrap'>
<div id="one">apple</div>
<div id="two">pear</div>
</div>
子 div 具有转至 ajax 调用的点击事件。
$('#wrap').delegate('div', 'click', getInfo);
我想从被单击的特定 div 取消单击事件的委托(delegate)。换句话说,如果单击 div#one,则该事件将从 div#one 取消委托(delegate),但仍保留在 div#two 上的委托(delegate)。
谢谢
最佳答案
因为 delegate()
[docs]方法使用事件委托(delegate),只有一个处理程序分配给容器 #wrap
处理所有冒泡到它的点击事件。
一种解决方案是向单击的元素添加一个处理程序,以防止事件冒泡。
$('#wrap').delegate('div', 'click', getInfo);
function getInfo() {
$(this).bind('click',false);
// rest of the code
}
这会将处理程序绑定(bind)到被单击的元素。该处理程序除了阻止事件传播之外什么也不做(并阻止默认行为,但对于 <div>
没有默认行为)。
关于jquery 取消委托(delegate)帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6687067/