我想选择所有将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;
或者Jsfiddle http://jsfiddle.net/alexrada/dpbgw6yk/3/
答案 0 :(得分:2)
它实际上取决于事件如何附加到javascript中的dom元素。它可以使用jQuery或其他库或纯javascript添加。
如果您想知道如果使用jQuery附加事件可以如何完成,那么您可以执行类似的操作。
var clickEvents = $(element).data("events").click;
$.each(clickEvents, function(key, event) {
alert(event.handler)
});
因此,内联onclick
事件处理程序和通过javascript附加的事件将为您提供该dom元素上事件处理程序的总数。
我认为我们无法检查附加了addEventListener
或attachEvent(IE specific)
演示 http://jsfiddle.net/onzof2eL/
如果您使用的是更高版本的jQuery,那么您必须使用$._data(element, "events")
,如下面评论中提到的@Frogmouth。