javascript - 防止点击内部链接时点击外部li

标签 javascript jquery html

我有一些li,其中包括如下a链接

<li>
  <span>SomeText</span>
  <a href='someurl' class='entityDetailModal'>sometext</a>
</li>

我正在使用第三方库(“LightGallery”),它在 Li 上添加了 click 事件,并且通过 Jquery 我添加了 click 事件到链接以显示对话框。 问题是当我点击链接时,两个点击事件都会被触发,

我的点击事件处理程序是

$('body').on("click", 'a.entityDetailModal', function (event) { 
    event.preventDefault(); 
    event.stopPropagation();
    loadDialog(this, event, '#mainContainer', true, true, false); 
    return false; 
});

我在链接 onclick 事件处理程序中尝试了 event.stopPropagation()event.preventDefault();return false; 但它们没有不起作用。

示例:http://jsfiddle.net/HuKab/30/

我该如何克服这个问题?

更新

看来问题是我添加点击事件处理程序的方式, 使用这种方式似乎一切都好

$('a.entityDetailModal').click(function (event) { 
    event.preventDefault(); 
    event.stopPropagation();
    loadDialog(this, event, '#mainContainer', true, true, false); 
    return false; 
});

更新2

感谢@Huangism,这篇文章stackoverflow.com/questions/16492254/pros-and-cons-of-using-e-stoppropagation-to-prevent-event-bubbling正在解释原因。

最佳答案

使用stopPropagation();在子元素中

 $("li").click(function (e) {

    alert("li");
});

$("a").click(function (e) {
    e.preventDefault();     // stop the default action if u need 
    e.stopPropagation();
    alert("a");
});

DEMO

关于javascript - 防止点击内部链接时点击外部li,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24697545/

相关文章:

Javascript 或 HTML5 检索本地 ip

javascript - 用函数中的数组替换现有数组

javascript - 清除超时()不起作用

javascript - LI 内的 DIV 元素

javascript - 当顶部有另一个标签时,如何将CSS悬停分配给标签?

同意条款和条件的 HTML 复选框和提交按钮

javascript - 当 div 上有其他文本时居中对齐文本

javascript - 在 Node.js 中使用 post 请求获取选中的单选按钮的值

php - 使用户能够双击表格文本来输入更改;数据库根据这些更改进行更新

javascript - html5 :how to align multiple div without shifting away when changing browser