我需要在 onclick
事件的调用对象上有一个处理程序。
<a href="123.com" onclick="click123(event);">link</a>
<script>
function click123(event) {
//i need <a> so i can manipulate it with Jquery
}
</script>
我想在不使用 jQuery 的 $().click
或 $().live
但使用上述方法的情况下执行此操作。
最佳答案
在内联点击处理程序中传入this
<a href="123.com" onclick="click123(this);">link</a>
或者在函数中使用event.target
(根据W3C DOM Level 2 Event model)
function click123(event)
{
var a = event.target;
}
当然,IE is different ,所以处理这个问题的普通 JavaScript 方法是
function doSomething(e) {
var targ;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
}
或更简洁
function doSomething(e) {
e = e || window.event;
var targ = e.target || e.srcElement || e;
if (targ.nodeType == 3) targ = targ.parentNode; // defeat Safari bug
}
其中 e
是在 IE 以外的浏览器中传递给函数的事件对象
。
不过,如果您使用的是 jQuery,我强烈建议使用不显眼的 JavaScript,并使用 jQuery 将事件处理程序绑定(bind)到元素。
关于javascript - 如何获取onclick调用对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1553661/