Псевдонимы готовых функций jQuery

Я немного запутался во всех разных способах создания нового объекта jQuery.

соответствующие документы выглядят следующим образом: http://api.jquery.com/ready/ http://api.jquery.com/jQuery/

Из этих двух документов все следующие эквивалентны (за исключением псевдонима или отсутствия псевдонима «$»):

  • $(документ).готовый(обработчик)
  • $().готов(обработчик)
  • $(обработчик)
  • jQuery (функция ($) {});
  • jQuery (документ). готов (функция ($) {});

Это правильно? Я что-то пропустил?


person SooDesuNe    schedule 09.11.2010    source источник


Ответы (3)


Ну, есть еще. Из документов:

Также есть $(document).bind("ready", обработчик). Он ведет себя аналогично методу ready
, но с одним исключением: если событие ready уже запущено и вы пытаетесь выполнить .bind("ready"), связанный обработчик не будет выполнен.

Другие методы инициализатора будут выполняться всегда... поэтому вы можете объявить $(document).ready(function() { //stuff }, например, в ряде файлов, а обработчик всегда будет запущен.

Я бы использовал jQuery(document).ready(function($) {}) или $(document).ready(function() {}) чаще, чем нет... Я считаю, что они более читабельны.

Другой подход состоял бы в том, чтобы вызвать скрипт непосредственно перед закрывающим тегом body и сделать в нем что-то вроде:

(function($) {
    //stuff
})(jQuery);

если вам нужно избежать конфликтов с другими библиотеками, использующими $. Это самовыполняющаяся анонимная функция, которая позволяет вам использовать псевдоним в своей области действия, не опасаясь конфликтов с другими библиотеками.

person dianovich    schedule 09.11.2010
comment
jQuery(function($){ }); позволяет вам использовать $ без конфликтов и одновременно с готовностью к DOM :) - person Nick Craver; 10.11.2010
comment
Да, я просто нахожу jQuery(document).ready(function($) {}) немного более читабельным, хотя, вероятно, это не имеет большого значения. Пример самовыполняющейся анонимной функции предлагает повышение производительности, поскольку вы размещаете код непосредственно перед конечным тегом body. - person dianovich; 10.11.2010

Они несколько эквивалентны:

  • $(document).ready(handler) — настраивает handler при загрузке DOM
  • $().ready(handler) — запускает handler при загрузке DOM (устарело, не используйте)
  • $(handler) — запускает handler, затем загружается DOM — ярлык для $(document).ready(handler)
  • jQuery(function($) {}) то же, что и № 3 выше, только с использованием jQuery вместо псевдонима $
  • jQuery(document).ready(function($) {}) — то же, что и в первом случае, снова используя jQuery вместо псевдонима $

Если $ определяется как что-то еще, например. Прототип, то первые 3 не сработают. Последние 2 похожи: они просто принимают первый переданный аргумент (объект jQuery) и делают его $ внутри, что позволяет сделать это, даже когда $ является чем-то другим:

jQuery(function($) {
  $("input").val("something");
});
person Nick Craver    schedule 09.11.2010
comment
Ага. Я думаю, что наиболее заметным из них является устаревший $().ready(handler). - person karim79; 10.11.2010

Хорошо, если вы используете только jQuery, тогда $() эквивалентно jQuery(). Таким образом, это покрывает половину из них.

Затем, если вы используете $() вместо $(document).ready, это то же самое. В данном случае это просто вспомогательная функция. Например, вы можете добавить ready к чему-то другому, и в этом случае вы должны сделать: $(foo).load({})

Наконец, я не знаю, что вы имеете в виду под $().ready, потому что вам нужно передать параметр.

person Amir Raminfar    schedule 09.11.2010
comment
Ах, неудивительно, что я никогда не видел $() без параметров. Это устарело. - person Amir Raminfar; 10.11.2010