我遇到了必要的直播活动,因为我正在动态地向网页添加元素。
常规点击事件正常。我想知道实时点击事件失败的原因。我在JSFiddle设置的演示中有说明。也许有人可以向我解释为什么会这样。
演示: http://jsfiddle.net/MezfS/2/
感谢您的时间。
答案 0 :(得分:3)
“live”事件的行为与普通事件处理程序不同。绑定实时事件时,事件处理程序将附加到页面中最顶层的元素之一(例如正文或文档)。因为当你点击页面上的任何地方时,你也点击了正文,事件就会冒出来。例如,您单击包含在div中的链接,该链接包含在正文中,将为链接触发事件,为div触发事件,然后为正文触发。
当事件到达正文时,“实时”事件处理程序将查看它,如果点击源与您的选择器匹配,它将触发您的功能。
除非链接上的一个处理程序或div停止了事件传播。在这种情况下,事件会停止并且不会冒泡,永远不会到达“实时”处理程序。
我认为jQuery UI会在选项卡上放置一个处理程序,以捕获点击,并且该处理程序实际上正在停止传播,使“实时”处理程序无效。
答案 1 :(得分:1)
.live
依赖于事件冒泡到文档,并且您正在停止处理程序的立即传播,从而阻止它工作。试试这个:
$('li[id=^="tab"]').delegate(".tab-close", "click", function(e) {
e.stopImmediatePropagation();
tabselector.tabs('remove', tabselector.tabs('option', 'selected'));
});
答案 2 :(得分:0)
使用委托修复它并允许click事件冒泡到锚点:
$('#pui-tabs a').delegate('.tab-close', 'click', function(e) {
tabselector.tabs('remove', tabselector.tabs('option', 'selected'));
});