【发布时间】:2011-02-07 13:02:17
【问题描述】:
这不是关于 jQuery 的问题,而是关于 jQuery 如何实现这种行为的问题。
在 jQuery 中你可以这样做:
$('#some_link_id').click(function()
{
alert(this.tagName); //displays 'A'
})
有人可以笼统地解释一下(无需您编写代码)他们如何获得将事件的调用者 html 元素(此特定示例中的链接)传递到 this 关键字?
我显然试图在 jQuery 代码中查看 1st,但我无法理解一行。
谢谢!
更新: 根据 Anurag 的回答,我决定在这一点上发布一些代码,因为它似乎比我想象的更容易编码:
function AddEvent(html_element, event_name, event_function)
{
if(html_element.attachEvent) //IE
html_element.attachEvent("on" + event_name, function() {event_function.call(html_element);});
else if(html_element.addEventListener) //FF
html_element.addEventListener(event_name, event_function, false); //don't need the 'call' trick because in FF everything already works in the right way
}
然后现在通过一个简单的调用,我们模拟了在事件处理程序中使用 this 的 jQuery 行为
AddEvent(document.getElementById('some_id'), 'click', function()
{
alert(this.tagName); //shows 'A', and it's cross browser: works both IE and FF
});
你认为有什么错误或我误解的东西太肤浅了吗?
【问题讨论】:
-
FF看起来不错,好久没写IE特有的事件处理了,不过如果能用就万事大吉了! :)
标签: javascript events event-handling this dom-events