Вопрос не в jQuery, а в том, как jQuery реализует такое поведение.
В jQuery вы можете сделать это:
$('#some_link_id').click(function()
{
alert(this.tagName); //displays 'A'
})
Может ли кто-нибудь объяснить в общих чертах (не нужно, чтобы вы писали код), как они получают, чтобы передать HTML-элементы вызывающего события (ссылка в этом конкретном примере) в this ключевое слово?
Я, очевидно, пытался искать 1-й в коде jQuery, но я не мог понять одну строку.
Спасибо!
UPDATE:
в соответствии с ответом Анурага я решил опубликовать некоторый код на этом этапе, потому что кажется, что код проще, чем я думал:
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
});
Как вы думаете, есть какие-то ошибки или что-то, что я неправильно понял, воспринимая все это слишком поверхностно ???