... но можем ли мы получить такой же эффект, как этот:
$ ("img"). Hide (800, "$ (this) .show ();");
Хм, нет, ты не можешь.Если второй аргумент hide
является строкой, то это должно быть замедление, а "$(this).show();"
не является замедлением;так что $("img").hide( 800, "$(this).show();" );
просто добавит непонятные ошибки в вашу консоль и даже не будет ничего скрывать.
Если вы видите это:
$(this).hide;
использовал много, то вы ищетемного бесполезного кода, и вы должны начать смотреть на лучший код.$(this).hide;
не делает ничего полезного, возможно, он будет использовать алгоритмы удаления мертвого кода вашего движка JavaScript, но он, безусловно, ничего не скроет на странице.Сказать $(this).hide;
не более продуктивно, чем сказать 42;
;конечно, они оба являются юридическими утверждениями, но они не делают ничего полезного.
Возможно, вы имели в виду:
$(this).hide();
Но это полностью отличается от this.hide();
, если this
не являетсяуже объект JQuery.Стандартные объекты DOM не имеют hide
методов, поэтому this.hide();
, как правило, является ошибкой, тогда как $(this).hide();
скрывает объект DOM и переходит к следующему оператору.
И, наконец, мы добираемся до чего-топо крайней мере, это имеет смысл:
element.click(function() {
notify();
});
// [...]
element.click(notify);
Функция click
просто нуждается в функции обратного вызова, чтобы вы могли дать ей имя функции или анонимную функцию (то есть функцию "литерал"),Аналогично, вы можете сказать pancakes(11);
или var eggs = 11; pancakes(11);
.
Так что да, вы можете использовать именованную функцию в качестве обратного вызова jQuery;но эти два element.click
вызова не эквивалентны.В первом случае:
element.click(function() { notify() });
Значение this
внутри notify
будет window
;во втором случае:
element.click(notify)
this
будет DOM-объектом элемента внутри notify
.
Возможно, это не так много ответа, но мне нужно больше места, чем комментарийпредлагает указать на всю путаницу в вашем вопросе.