一个类的EventListener?

时间:2015-06-19 13:31:13

标签: javascript jquery html class addeventlistener

我有一个引用Id的EventListener并且它运行良好,唯一的问题是我至少有十几个这个EventListener需要引用的地方所以我不想要有十几个脚本都是相同但是有一个不同的Id。有没有办法让EventListener引用一个我可以在我需要的所有地方使用的类。 感谢

JAVASCRIPT:

document.getElementById("chartJump").addEventListener("click", function (e) { e.preventDefault() });

HTML:

<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenuGraphOne">
    <!--DROPDOWN MENU-->
    <li role="presentation"><a role="menuitem" tabindex="-1" id="chartJumpOne" href="#graphOneChart">Chart</a></li>
    <li role="presentation"><a role="menuitem" tabindex="-1" id="tableJumpOne" href="#graphOneData">Data</a></li>
</ul>

4 个答案:

答案 0 :(得分:3)

是的,使用课程。每个元素都应该有一个共同的类。使用jQuery,您可以这样做:

$(document).ready(function () {
  $(".className").click(function (e) {
    e.preventDefault();
  });
});

获取有关$.click()$.ready()的更多信息。正如您添加了,我已经提供了jQuery解决方案。

使用vanilla JavaScript,您可以通过两种方式实现相同的功能:

适用于旧浏览器:

window.onload = function () {
  list = document.getElementsByClassName("className");
  for (var i = 0; i < list.length; i++) {
    list[i].addEventListener("click", function (e) {
        e.preventDefault();
    });
  }
};

适用于新版浏览器:

window.onload = function () {
  list = document.querySelectorAll(".className");
  for (var i = 0; i < list.length; i++) {
    list[i].addEventListener("click", function (e) {
        e.preventDefault();
    });
  }
};

答案 1 :(得分:1)

如果您未使用jQuery,则可以使用querySelectorAll

var els = document.querySelectorAll(".chartJump");


for (var i = 0; i < els.length; i++) {

    els[i].addEventListener("click", function (e) {
        e.preventDefault()

        eventHandler();
    });
};

如果您jQuery,则可以使用on

$(".chartJump").on('click', function () {
    // Your code
});

答案 2 :(得分:0)

如果您在脚本中引用jQuery库,那么为什么要使用原始js代码,这很难编写。

首先为所有元素添加一个类名,然后使用相同的类选择器将click之类的事件监听器附加到它

HTML CODE:

<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenuGraphOne">
<!--DROPDOWN MENU-->
<li role="presentation"><a role="menuitem" tabindex="-1" class='jumpChart' href="#graphOneChart">Chart</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" class='jumpChart' href="#graphOneData">Data</a></li>

JS代码:

$('.jumpChart').on('click',function(){
    //handle the event here
});

有关更多信息,请参阅jQuery论坛http://api.jquery.com

快乐编码

答案 3 :(得分:0)

您可以为每个元素分配一个类,并使用for循环迭代并放置一个eventListener。

var elements = document.querySelectorAll('.className');

for (i = 0; i < elements.length; ++i) {

  elements[i].addEventListener('click', function() {

    // Do something amazing

  });

}

via:http://pencilscoop.com/2014/06/using-eventlisteners-on-multiple-elements

或者你可以单独为你的元素添加onclick

 <a role="menuitem" tabindex="-1" href="#graphOneChart" onclick="function1()">Chart</a>