jquery 取消委托(delegate)帮助

标签 jquery

我将元素动态添加到 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> 没有默认行为)。

示例: http://jsfiddle.net/mzvHK/

关于jquery 取消委托(delegate)帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6687067/

相关文章:

JavaScript 克隆一个 "class"实例

jquery - TableSorter 奇怪的图像加载

javascript - jquery点击事件递归

javascript - 我可以在 Bootstrap 弹出窗口中使用动态内容吗?

javascript - 如何将此 jQuery 代码转换为 JavaScript?

jquery - 光滑的 slider 箭头看不正确

javascript - Angular 在元素范围内保存一个值

javascript - jquery ajax 调用不在 firefox 中执行

jquery - jquery .eq() 方法中的 "eq"代表什么?

javascript - 居中对齐生成的文本