javascript - 通过类名获取祖先

标签 javascript html google-closure-library

我有一个带有按钮的组件,并列出了这两个按钮在单击时执行事件。我需要一种通用的方法来获取这些元素的祖先元素。结构如下:

<div class='a'>
   <button class ='b' data-name="hello">
      <span class ='c'>clickMe
         <span>somehting</span>
      </span>
   <button>
   <ul class ='d'>
      <li data-name="about">
          <span class ='e'>something here
             <span>somehting</span>
          </span>
      </li>
      <li data-name="home">
          <span class ='e'>something elser here
              <span>somehting</span>
          </span>
      </li>
   </ul>
</div>

我尝试获取元素按钮和 li,因为我需要获取数据名称信息。 e.target是被点击的元素

var targetel = goog.dom.getAncestorByClass(e.target,null,class??);

不确定如何获取正确的元素,无论它是按钮还是 li。我需要为所有元素添加一个唯一的类吗?

最佳答案

只需使用e.currentTarget

var result = document.querySelector('#result');
var clickables = document.querySelectorAll('button, li');

//add click listener to elements
for (var i = 0, l = clickables.length; i < l; i++) {
  clickables[i].addEventListener('click', getDataName);
}

function getDataName(e) {
  var dataName = e.currentTarget.getAttribute('data-name');
  
  result.textContent = dataName;
}
<div class='a'>
   <button class ='b' data-name="hello">
      <span class ='c'>clickMe
         <span>somehting</span>
      </span>
   </button>
   <ul class ='d'>
      <li data-name="about">
          <span class ='e'>something here
             <span>somehting</span>
          </span>
      </li>
      <li data-name="home">
          <span class ='e'>something elser here
              <span>somehting</span>
          </span>
      </li>
   </ul>
</div>

<div id="result">data-name of clicked element goes here</div>

关于javascript - 通过类名获取祖先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31731151/

相关文章:

javascript - 相同的代码比等效的 JS 闭包库慢

javascript - Node.js/jade——如何将 mysql 数据作为局部变量传递到内联 javascript 中?

javascript - 数据表不排序和分页数据

javascript - Jquery Nav 检测屏幕尺寸

html - 将容器设置为 50% 宽度

javascript - 基于先前选择的动态选择框

javascript - jQuery 和 Canvas 加载行为

javascript - 基于Angular的三条件按钮

javascript - 当 DOM 树完成时,如何让 Google Closure 调用我的 init 函数

javascript - 取消 JavaScript promise