javascript停止播放不';无法使用ajax.load

javascript停止播放不';无法使用ajax.load,javascript,jquery,stoppropagation,Javascript,Jquery,Stoppropagation,我使用.stopPropagataion()在单击标记时停止冒泡 $(document).ready(function(){ $(".article a").click(function(e) { e.stopPropagation(); }); }); 使用此HTML: <li class="article" onlick="javascript:somefunction();"> <div id="div_id"> &l

我使用
.stopPropagataion()
在单击
标记时停止
  • 冒泡

    $(document).ready(function(){
       $(".article a").click(function(e) {
            e.stopPropagation();
       });
    });
    
    使用此HTML:

    <li class="article" onlick="javascript:somefunction();">
       <div id="div_id">
          <a>Some link</a>
       </div>
    </li>
    
  • 某些链接

  • 一切正常,但后来我使用
    $('div_id').load(“div_html.html”)
    将一些内容动态加载到div中。现在我的
    .stopPropagation()
    无法停止冒泡。为什么它不再工作了?

    问题是,当您更新
    div
    的内容时,您会破坏其中的所有元素(包括附加到它们的任何事件处理程序)。自代码运行时起,您的代码正在挂起
    div
    中的
    a
    元素上的
    单击
    事件;
    div
    中的新
    a
    元素将不会连接

    在您的情况下,最好使用():

    这将钩住
    而不是单击
    div上的
    。当单击发生时,它从链接冒泡到
    div
    ,jQuery创建的单击处理程序在这里检查它,看它是否实际上是对任何
    a
    元素的单击。如果是,则停止单击

    从jQuery 1.7开始,新的推荐语法是:

    请注意,参数的顺序不同于
    委托
    ,但不同的是,它做的是相同的事情


    我建议避免将旧式的DOM0处理程序(事件处理程序属性)与新型的DOM2代码(您的处理程序附带了jQuery)相结合。在许多浏览器中,这两种机制有些不同,可能无法像您希望的那样完美地结合在一起

    关于这一点的另外两项评论:

    onlick="javascript:somefunction();"
    
  • 它是
    onclick
    ,而不是
    onclick
    (您缺少
    c
  • 在事件处理程序属性上不使用
    javascript:
    伪协议,只使用
    href
    s。把那部分去掉。(为什么它不会导致错误?因为纯属巧合,它是有效的JavaScript—您正在定义一个从未使用过的脚本。)

  • 尝试
    返回false而不是
    e.stopPropagation()
    Re
    onlick=“javascript:somefunction();”
    ,三个问题:1)它是
    onclick
    ,而不是
    onlick
    (您缺少
    c
    ),以及2)您不在事件处理程序属性上使用
    javascript:
    伪协议,仅
    href
    s;3) 最好避免将旧式的DOM0处理程序(事件处理程序属性)与新样式的DOM2代码(您的处理程序附带了jQuery)混合使用。您确定这样做有效吗?单击处理程序在冒泡到
    .article
    时执行,因为它已附加到该元素,所以它不会阻止事件冒泡到
    .article
    ,因为太晚了@pimvdb:谢谢,我意识到在添加链接时,我把它移到了
    div
    。谢谢你的评论和帮助。1) 它仍然不起作用。2) 关于onlick(显然我拼错了,谢谢你指出了这一点),3)你推荐什么来代替onclick=“javascript:@user1073201:1)它确实可以阻止你引用的代码之外的内容;请参阅答案中的更新示例(我添加了一个
    load
    call).3)使用jQuery在
    li
    上钩住
    单击
    事件,而不是使用
    onclick
    。您的示例使我相信它应该可以工作。我将检查我的代码。谢谢,您让我愉快。
    $(document).ready(function(){
       $(".article div").on("click", "a", function(e) {
            e.stopPropagation();
       });
    });
    
    onlick="javascript:somefunction();"