Я следующий Javascript код найден также в этой скрипкой: http://jsfiddle.net/periklis/k4u4c/Использование «это» из обработчика событий в JQuery
<button id = "element_id" class = "myclass">Click me</button>
<script>
$(document).ready(function() {
this.myfunc = function() {
console.log('Hello world');
}
this.myfunc();
$('#element_id').select('.myclass').bind('click', function() {
this.myfunc(); //Obviously this doesn't work
});
});
</script>
Как я могу назвать this.myfunc(), когда элемент щелкнул? Я не хочу определять myfunc() в глобальном пространстве.
Спасибо, как всегда
Кэш 'this' в переменной, скажем,' var that = this; '. http://jsfiddle.net/k4u4c/1/ –
* Я не хочу определять myfunc() в глобальном пространстве. *: Присвоение функции свойству 'document' тоже не очень хорошо. Просто создайте локальную переменную в этой функции. Обработчик событий является закрытием и, следовательно, имеет доступ ко всем переменным, которые вы объявляете в обработчике готового события. –
@FelixKling: Я просто написал ответ на эти строки после того, как казалось, что первые несколько не подобрали на этом. :) Его всегда важно знать, что это означает в этом контексте. :) – Chris