В ответе @ patrickdw jQuery устанавливает область обратного вызова для события для элемента DOM, для которого было сгенерировано событие. Например, см. Параметр eventObject
в документации для обработчика click()
.
Мой оригинальный ответ (ниже) полезен, когда вы хотите создать плагин jQuery, чтобы вы могли вызывать ваши собственные пользовательские методы для объектов jQuery и иметь для объекта jQuery значение this
во время выполнения. Однако это не правильный и простой ответ на оригинальный вопрос.
// Within a plug-in, `this` is already a jQuery object, not DOM reference
$.fn.showBox = function(){ this.parents('.container').find('.box').show(); };
$.fn.hideBox = function(){ this.parents('.container').find('.box').hide(); };
$('a').hover(
function(){ $(this).showBox() },
function(){ $(this).hideBox() }
);
Редактировать : Или, если (как предлагается), вы хотите добавить только одно имя в глобальное пространство имен метода jQuery:
$.fn.myBox = function(cmd){
this.closest('.container').find('.box')[cmd]();
};
$('a').hover(
function(){ $(this).myBox('show') },
function(){ $(this).myBox('hide') }
);
Или, в более общем смысле:
$.fn.myBox = function(cmd){
switch(cmd){
case 'foo':
...
break;
case 'bar':
...
break;
}
return this;
};
Для получения дополнительной информации см. Руководство по созданию плагинов jQuery .