jQuery: привязать функцию JS ко всем выбранным элементам - PullRequest
0 голосов
/ 23 декабря 2010

Я уверен, что это простой вопрос, но здесь я не нашел подходящих ответов. У меня есть такой код:

 $('.thumbImg').mouseout(function(){selectCur()});
//selectCur() is a pure-JS function defined elsewhere in the document

Но функция связана только с первым элементом класса .thumbImg. Обычно я бы использовал $(this), но здесь это не сработает (если я не делаю что-то не так).

Полагаю, мое последнее средство - цикл for, но я уверен, что есть способ избежать этого.

Спасибо!

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

Причина, по которой this не работает, заключается в том, что она является локальной для function() {} в вашем коде, а не для функции selectCur().

Если вы хотите использовать this в selectCur()Вы можете сделать это следующим образом:

$('.thumbImg').mouseout(selectCur);

То, как вы это делаете, - это создание анонимной функции / замыкания, которая вызывает вашу функцию и ссылается на нее в mouseout.Вместо этого все, что вам нужно сделать, это указать на вашу функцию (не вызывать ее, здесь нет ()), и она будет вызываться при срабатывании события.Вам не нужна функция, чтобы указывать на функцию.Просто укажите на это, и это сработает.

0 голосов
/ 23 декабря 2010

Не думайте, что это проблема кеша, это проблема контекста. Исправьте это, передав $ this на ваш selectCur.

$('.thumbImg').mouseout(function(){selectCur($(this))});

Или даже

$('.thumbImg').mouseout(selectCur);

Тогда selectCur может использовать $ (this); Я думаю, что первое решение лучше, так как selectCur можно использовать из других мест, так что вы можете просто передать узел при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...