Почему метод обернут анонимной функцией?

Привет!
Типичный jquery код выглядит так:
$('div').mouseenter(function(){
        $('div').fadeTo('fast', 1);
});

Как я понял, за селектором следует метод mouseenter( ), в круглые скобки которого задаются параметры, ими могут быть как любые значения, так и методы, в данном случае это метод fadeTo().

Зачем метод обернут анонимной функцией?
Почему невозможно что-то подобное?
$('div').mouseenter(
        $('div').fadeTo('fast', 1);
 );

Заранее извиняюсь за, возможно, глупый вопрос.
  • Вопрос задан
  • 2630 просмотров
Решения вопроса 1
0lorin
@0lorin
программист
var fade = $('div').fadeTo('fast', 1);
var fade = function(){
    $('div').fadeTo('fast', 1);
}

Чуешь разницу?
В первом случае в fade запишется результат выполнения $('div').fadeTo('fast', 1);
Во-втором — функция, которая будет это дело выполнять при каждом вызове fade().
То есть если не оборачивать в анонимную функцию, fadeTo сработает при навешивании события, а не когда оно выстрелит.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
fart
@fart
В функцию mouseenter передается параметр, mouseenter ожидает что её при вызове передадут callback функцию, в частности Вы передаете анонимную функцию.
function(){
...}
Вы по-сути задаете обработчик события.

это тоже самое(ну почти), что
var fn = function(){
        $('div').fadeTo('fast', 1);
        //ИМХО лучше так, $(this).fadeTo('fast', 1);
}

$('div').mouseenter(fn);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы