我知道在使用jQuery时可以使用$('element').click();
来捕获HTML元素的点击事件,但是如何使用纯Javascript实现呢?
我知道在使用jQuery时可以使用$('element').click();
来捕获HTML元素的点击事件,但是如何使用纯Javascript实现呢?
document.getElementById('element').onclick = function(e){
alert('click');
}
我通常创建一种全局事件处理程序,非常强大,你可以捕获事件“类型”的className、nodeTypes等等,我希望人们会发现这很有用。
document.onclick = eventRef
function eventRef(evt) {
var han;
evt || (evt = window.event);
if (evt) {
var elem = evt.target ? han = evt.target : evt.srcElement && (han = evt.srcElement);
// evt.type could be, mouseup, mousedown...
// elem.id is the id or the element
// elem.className is the class name of the element
// you could nest expression, use substrings to extract part of a className
if (evt.type=="click" && elem.id == "gotit" || elem.className == "someClassName") {
alert(elem.id);
}
}
}
addEventListener
代替直接分配处理程序函数。var div = document.getElementById('test');
div.addEventListener('click', function(){
console.log('CLICKED');
});
有几个原因导致这样,但我将列举我认为最重要的:
addEventListener
时,您不会错误地将事件侦听器添加到非DOM对象上 - 您的代码会失败,而不是将 onclick
函数静默地分配给某个对象。onclick
附加仅一个事件侦听器(无需为每个要添加的处理程序进行其他代码操作) - 这可能会限制一些内容。onclick
附加多个事件。 var _click = el.onclick; el.onclick=function(e){_click.call(this,e); //More code};
. - gen_Ericdocument.addEventListener('click', function (event) {
// If the clicked element doesn't have the right selector, bail
if (!event.target.matches('input')) return;
// Don't follow the link
event.preventDefault();
// Log the clicked element in the console
console.log(event.target);
}, false);
这是一篇关于此事的有趣文章,我有时也会使用相同的方法,基本上,您需要将事件处理程序添加到window
。
document.getElementsByTagName('div')
代替。示例: http://jsfiddle.net/e9jZW/2/ - gen_Eric