首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >附加事件处理程序优化javascript

附加事件处理程序优化javascript
EN

Stack Overflow用户
提问于 2012-03-17 01:54:45
回答 3查看 371关注 0票数 0
代码语言:javascript
复制
<div id='test'>
 <a href='#'>Link 1</a>
 <a href='#'>Link 2</a>
 <a href='#'>Link 3</a>
 <a href='#'>Link 4</a>
 <a href='#'>Link 5</a>
 <a href='#'>Link 6</a>
 <a href='#'>Link 7</a>
 <a href='#'>Link 8</a>
 ...
 <a href='#'>Link n</a>
</div>

如何处理所有锚标签30 $('.test a').click() it会很有帮助。它们如何能够传递正确的this属性?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-17 02:01:04

您可以将单击处理委托给div,然后检查处理程序内部的目标,并根据单击的锚点执行操作。

代码语言:javascript
复制
var div = document.getElementById('test');
div.addEventListener('click', function(event){
    console.log(event.target.innerHTML)
});

http://jsfiddle.net/nrVS9/

警告:9之前的IE版本不支持addEventListener。如果您需要支持这些浏览器,请检查addEventListener是否可用,如果不可用,请使用attachEvent

票数 2
EN

Stack Overflow用户

发布于 2012-03-17 02:03:07

我推荐使用下面这样的方法:

代码语言:javascript
复制
function callback(e) {
    var e = window.e || e;

    if (e.target.tagName !== 'A')
        return;

    // Do something
}

if (document.addEventListener)
    document.addEventListener('click', callback, false);
else
    document.attachEvent('onclick', callback);

此外,我建议在每个锚点上附加一个pseduo-attribute,这样你就可以用它来检测用户点击了哪个锚点。

可以通过使用function.call(element, arg1, arg2, ...)function.apply(element, [arg, arg2, arg3, ...])调用函数来设置this

票数 2
EN

Stack Overflow用户

发布于 2012-03-17 02:04:42

代码语言:javascript
复制
document.getElementById('test').onclick = function(event){
    event = event || window.event;
    if(event.target.nodeName == "a"){
        console.log("link clicked");
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9742175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档