Javascript 获取元素类或数据属性

标签 javascript html css

目前我有一个 javascript 函数可以查找 id 并更改一些 CSS。但是我希望这个函数在多个 div 上运行。因此我需要我的函数来查找类或数据属性。你能帮帮我吗?

<script>
  var div = document.getElementById('hover')
  div.onclick = function () {
    this.style.width = '800px'
    this.style.transition = 'all 1s'
    this.style.backgroundColor = 'red'
  }
</script>

最佳答案

您可以将所有元素包装在一个公共(public)父级中,然后将您的 click 事件处理程序应用于该父级,检查发起该事件的 target

这样做您需要将事件附加到单个元素(而不是每个元素)。

另外,你的样式应该在 CSS 中声明为一个类,所以你只需要切换那个特定的类(为了可维护性,最好远离 javascript 的 css)

这是一个简单的例子http://codepen.io/anon/pen/jPwXVr

CSS

.open {
  width: 800px;
  -webkit-transition  : all 1s;
  -moz-transition  : all 1s;
  transition  : all 1s;
  background: red;
}

JS

 document.getElementById('wrap').addEventListener('click', function(ev) {
  var target = ev.target
  if (target.nodeName === 'DIV') {
      target.className = 'open';        
  } 
}, false);

如果您的标记结构无法使用通用包装器,您可以将事件附加到 body 元素上,就像这样

http://codepen.io/anon/pen/aOwPWY?editors=011

CSS

.element {
  width: 800px; 
  -webkit-transition  : all 1s;
  -moz-transition  : all 1s;
  transition  : all 1s;
}

.element.open {
  background: red;
}

JS

document.body.addEventListener('click', function(ev) {
   var t = ev.target;

   /* I used classList for the sake of brevity, check caniuse.com
      for its support across browser */

   if (t.classList.contains('element')) {
       t.classList.toggle('open');        
   } 
}, false);

关于Javascript 获取元素类或数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30807387/

相关文章:

javascript - 获取选择标签的显示值

javascript - 如何使用 jquery 从 HTML 提交数据

javascript - Highcharts 显示空白

javascript - 为什么我无法从 Marvel 读取此 Web api?

css - 从 Brackets 或 Visual Studio 启动时网页工作,从文件启动时中断

javascript - 我如何更改 woocommerce 中产品默认下拉排序的样式

html - Mui PrivateTabScroll Button 覆盖 css 中的 width 和 flex 属性

jquery - 如何选择具有特定CSS类的第三个div

javascript - 在 Javascript 中获取字符宽度

javascript - JS : I can't get the inner HTML of elements with a specific class name