Как установить 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() (который имитирует щелчок).

Ответ 3

Используйте Function.apply и передайте элемент DOM, возвращаемый запросом.

handleClick.apply($('#lnk')[0]);

Или еще лучше, пусть jQuery имитирует щелчок по элементу (предположим, что вы уже привязали обработчик события клика).

$('#lnk').click();