2

我有一个锚结构

<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/

4

2 回答 2

1

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

$(".someClass2").click(function(event) {
   event.stopPropagation()
  // return true;//navigate to link
});
于 2013-09-07T04:36:04.357 回答
0
$(".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/

于 2013-09-07T04:40:28.317 回答