2

我在课堂上有一个现场听众,它添加了一些内容。这以某种方式反复调用此侦听器。在这种情况下如何关闭传播?

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;
});     
4

2 回答 2

1

jQuery live 函数有一些缺陷记录在这里。列表中有趣的部分是这个声明

在事件处理程序中调用 event.stopPropagation() 无法停止附加在文档下方的事件处理程序;该事件已经传播到文档。

您应该使用新的 jQuery 机制“on”(参见此处)而不是“live”,并且对 event.stopPropagation() 的调用应该按预期工作。

于 2011-11-13T23:02:32.967 回答
0

事件首先被捕获,直到它到达目标元素,然后冒泡。在事件流期间,可以通过引起动作和/或通过停止事件(对于符合 W3C 的浏览器和command event.cancelBubble = true 对于 Internet Explorer),和/或取消事件的默认操作。

源维基

还,

jQuery

event.stopPropagation()

描述:防止事件在 DOM 树中冒泡,防止任何父处理程序收到事件通知。

希望这可以帮助。

于 2011-11-13T23:05:24.150 回答