选择添加了onClick侦听器(js函数)的所有元素

时间:2015-06-09 14:53:34

标签: javascript jquery html

我想选择所有将javascript函数添加为onClick的监听器的html元素。

如果他们在html中添加了 onclick 作为属性,我可以选择它们 使用$("[onclick]"),但稍后可以使用javascript添加侦听器。

是否可以选择所有元素,无论如何添加监听器?返回示例中的两个元素。



(function(){ 
function modify() {
  alert('inca un salut');
}
var t2 = document.getElementById("button2");
t2.addEventListener("click", modify, false);
console.log($("[onclick]"));
}())

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="button1" onclick="alert('salut')" value="click here" />

<input type="button" id="button2" value="click here element 2" />
&#13;
&#13;
&#13;

或者Jsfiddle http://jsfiddle.net/alexrada/dpbgw6yk/3/

1 个答案:

答案 0 :(得分:2)

它实际上取决于事件如何附加到javascript中的dom元素。它可以使用jQuery或其他库或纯javascript添加。

如果您想知道如果使用jQuery附加事件可以如何完成,那么您可以执行类似的操作。

var clickEvents = $(element).data("events").click;
$.each(clickEvents, function(key, event) {
    alert(event.handler)
});

因此,内联onclick事件处理程序和通过javascript附加的事件将为您提供该dom元素上事件处理程序的总数。

我认为我们无法检查附加了addEventListenerattachEvent(IE specific)

的事件处理程序

演示 http://jsfiddle.net/onzof2eL/

如果您使用的是更高版本的jQuery,那么您必须使用$._data(element, "events"),如下面评论中提到的@Frogmouth。