我在课堂上有一个实时监听器,可以添加一些内容。 这是以某种方式反复调用这个监听器。在这种情况下如何关闭传播?
SomeContent = "<p>Some content<p>";
moreContent = "<p>More content<p>";
$('.myClass').live('change', function (event){
var thisOption = $(this);
// event.preventDefault(); - does not work
// event.stopImmediatePropagation(); - does not work
var MyLocation = thisOption.closest('tr').next('tr');
// $(MyLocation).html("");
var thisTplReasons = $(moreContent);
thisTplReasons.appendTo(MyLocation).page();
return false;
});
答案 0 :(得分:1)
jQuery live函数有一些缺陷记录here。列表中有趣的部分是这个陈述
在事件处理程序中调用event.stopPropagation()对于停止附加在文档中较低位置的事件处理程序是无效的;该事件已经传播到文件。
你应该使用新的jQuery机制“on”(参见here)而不是“live”,并且对event.stopPropagation()的调用应该按预期工作。
答案 1 :(得分:0)
首先捕获事件,直到它到达目标元素,然后冒泡。在事件流期间,可以通过引发操作和/或通过停止事件(对于符合W3C的浏览器的方法event.stopPropagation(),在任一阶段中的路径中的任何元素(观察者)响应事件。对于Internet Explorer,命令event.cancelBubble = true),和/或取消事件的默认操作。
此外,
jQuery says
event.stopPropagation()
描述:防止事件冒泡DOM树,防止任何父处理程序被通知事件。
希望这有帮助。