【问题标题】:Stop Parent Handler call in Javascript在 Javascript 中停止父处理程序调用
【发布时间】:2013-09-07 16:05:38
【问题描述】:

我有一个锚结构

<a href="#" class="someClass1">
  <span><img src="expand.png"/></span>
  <span><a class="someClass2" href="abc.html">abc</span>
</a>

现在两个锚都定义了处理程序事件 -

$(".someClass1").click(function() { 
  //do something
  return false;
});

$(".someClass2").click(function() {
  return true;//navigate to link
});

现在我面临的问题是,如果用户单击 img 它很好,只是为了展开上下文菜单,但如果用户单击类 someClass2 的锚点,它应该导航到指定页面,但父处理程序会阻止这个打电话。

由于某些其他原因,我无法将父处理程序从 a.someClass1 移动到 span。那么有什么机制可以阻止父处理程序调用。

PS。这是我用于创建 wordpress 网站主题的 Jquerymobile.js。

JSFiddle:http://jsfiddle.net/subhash9/2VMm9/

【问题讨论】:

    标签: javascript jquery html wordpress


    【解决方案1】:

    您可能需要event.stopPropagation() 来阻止事件在祖先层次结构中进一步向上传播。

    $(".someClass2").click(function(event) {
       event.stopPropagation()
      // return true;//navigate to link
    });
    

    【讨论】:

      【解决方案2】:
      $(".someClass1").click(function(event) { 
           event.stopImmediatePropagation();
           event.preventDefault();//try this instead.
          //do something
      });
      
      $(".someClass2").click(function() {
      return true;//navigate to link
      });
      

      http://api.jquery.com/event.stopImmediatePropagation/

      【讨论】:

      • 感谢 VAGABOND,这很有帮助
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2022-06-18
      • 2013-01-11
      • 2013-04-03
      • 2023-03-10
      • 2019-01-26
      • 1970-01-01
      相关资源
      最近更新 更多