javascript - 使用 jQuery 单击元素时获取数据属性的值?

标签 javascript jquery

我有以下非常简单的代码。基本上我需要在单击元素时获取数据属性的值。

我使用以下代码:

$(document).on('click', ".MyLi", function (e) {
  var cont = $(this).attr('data-cont');
  alert(cont);
});

这可以工作,但有一个问题。

如果您在 fiddle 中运行以下代码,您将看到它将在 alert() 中显示 data-cont 值;但是当我点击子菜单时,它会首先在alert()中显示子菜单data-cont,然后显示我的菜单 data-cont 这是它的父级!

$(document).on('click', ".MyLi", function (e) {
  var cont = $(this).attr('data-cont');
  alert(cont);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<li class="MyLi" data-cont="MY MENU ">
  <a><i></i>&nbsp;MY MENU</a>
  <ul>
    <li class="MyLi" data-cont="MY SUBMENU">
      <a><i></i>&nbsp;MY SUBMENU</a>
    </li>
  </ul>
</li>

我只需要被点击元素的data-cont值!

有人可以让我知道我做错了什么吗?

最佳答案

这里发生的事情称为事件冒泡/传播。 event.stopPropagation() 就是您正在寻找的

这会阻止事件在您的情况下在同一选择器 .MyLi下向上冒泡到顶部元素或向下遍历到较低元素。

了解更多关于 here .

$(document).on('click', ".MyLi", function(e){

  e.stopPropagation();  
  var cont = $(this).attr('data-cont');
  
  alert(cont);

  
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<li class="MyLi" data-cont="MY MENU ">
<a>
<i></i>&nbsp;
MY MENU 
</a>
<ul>
<li class="MyLi" data-cont="MY SUBMENU"><a>
<i></i>&nbsp;
MY SUBMENU</a></li>
</ul></li>

关于javascript - 使用 jQuery 单击元素时获取数据属性的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49774834/

相关文章:

javascript - Sublime Text 插件显示所选变量的值?

javascript - Leaflet openstreetmap 加载,但不出现

JavaScript 不替换所有元素

javascript - 如何用jsDatePick显示年份选择控件

jquery - 带有远程数据源的基本 jquery 自动完成——如何实现?

jquery - 如何使用 jQuery 从多个 <td> 中获取其中一个 <td> 的值?

javascript - 在页面上查找单词,用 class 包装在 span 标签中

javascript - 输入和文本区域字段的自动大写

javascript - 使鼠标悬停时的 img src 更改适应触摸屏设备

javascript - Q :span automaticlly changes its shape when it animates to the border of its parent