这不是关于 jQuery 的问题,而是关于 jQuery 如何实现这种行为的问题。
在 jQuery 中你可以这样做:
$('#some_link_id').click(function()
{
alert(this.tagName); //displays 'A'
})
有人可以概括地解释一下(不需要您编写代码)他们如何将事件的调用者 html 元素(此特定示例中的链接)传递到this关键词?
我显然试图在 jQuery 代码中查看第一个,但我无法理解一行。
Thanks!
UPDATE:根据 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
}
然后现在通过一个简单的调用,我们模仿在事件处理程序中使用它的 jQuery 行为
AddEvent(document.getElementById('some_id'), 'click', function()
{
alert(this.tagName); //shows 'A', and it's cross browser: works both IE and FF
});
您是否认为我以过于肤浅的方式看待所有事情有任何错误或误解?