Как установить jQuery при вызове функции?
Используя jQuery, я устанавливаю обработчик щелчка тега ссылки следующим образом:
$('#lnk').click(handleClick);
handleClick делает что-то вроде этого:
function handleClick() {
var $this = $(this);
...
}
Теперь мне нужно напрямую вызвать handleClick() за пределами щелчка #lnk. Есть ли способ установить this
при вызове handleClick?
Ответы
Ответ 1
Вы можете использовать apply()
или call()
:
handleClick.call(theElementThatShouldBeThis);
Но, конечно, theElementThatShouldBeThis
должен быть элементом DOM или чем-то, что принято в качестве ввода для jQuery()
.
И это становится более сложным, если вы обращаетесь к элементу event
внутри handleClick
. Но я просто предполагаю, что вы этого не делаете;)
Вы также можете всегда выполнять обработчик событий в контексте #lnk
, вызывая $('#lnk').click()
(который имитирует щелчок).
Ответ 2
Я думаю, что вы ищете "call" или "apply":
Вызов
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call
Применить
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply
Из MDC
var result = fun.apply(thisArg, [argsArray]);
or
var result = fun.call(thisArg[, arg1[, arg2[, ...]]]);
Ответ 3
Используйте Function.apply и передайте элемент DOM, возвращаемый запросом.
handleClick.apply($('#lnk')[0]);
Или еще лучше, пусть jQuery имитирует щелчок по элементу (предположим, что вы уже привязали обработчик события клика).
$('#lnk').click();