Использование ‘$’ вместо ‘jQuery’ в WordPress

Дата публикации:Сентябрь 6, 2011

Насколько вы знаете, WordPress поставляется с jQuery (при написании статьи использовался WordPress версии 3.2.1). Чтобы использовать jQuery в своих плагинах и темах должным образом, вам необходимо добавить следующий код (в файл functions.php):

wp_enqueue_script("jquery");

Хитрость здесь заключается в том, что по умолчанию копия jQuery находится в режиме совместимости. Это означает, что привычный нам шорткат ‘$’ не будет работать. Сделано это для того чтобы не создавать конфликтов с другими библиотеками Javascript, использующими знак доллара (к примеру, MooTools или Prototype).

Многие создатели плагинов и разработчики тем знают об этом, и используют ‘jQuery’ вместо ‘$’ для сохранения безопасности.

/* Normal jQuery you see everywhere */
$("#some-element").yaddaYaddaYadda();

/* "Safe" jQuery you see in WordPress */
jQuery("#some-element").yaddaYaddaYadda(); 

Многократное написание строки ‘jQuery’ в скриптах усложняет их читаемость и чрезмерно увеличивает размер скрипта. Давайте прекратим это делать.

Если скрипт загружается в футере (что делается в большинстве случаев), вы можете обернуть код в анонимную функцию (технически, в любую IIFE), в которую будет передаваться ‘$’:

(function($) {
	
	// $ Works! You can test it with next line if you like
	// console.log($);
	
})( jQuery );

Если же вам необходимо загрузить все скрипты в header’е, вам, вероятно, понадобится использовать функцию готовности документа, в которую будет передаваться ‘$’:

jQuery(document).ready(function( $ ) {
	
	// $ Works! You can test it with next line if you like
	// console.log($);
	
});

Теперь вы можете без всяких опасений использовать символ ‘$’ в ваших jQuery-скриптах.

http://digwp.com/2011/09/using-instead-of-jquery-in-wordpress/

Поделиться

6 комментариев

  1. Иван says:

    Честно говоря не понял))). Вставил wp_enqueue_script("jquery");

    в функции темы и ничего не заметил). А вообще тема загрузки и подключения JS интересная, сейчас её рассматриваю… Может как нибудь напишите пост о правильном подключении JS на WP + плагины?!

    • Architect Of Ruin says:

      Про работу с jQuery в WordPress есть целая рубрика "Wordpress и jQuery" — перевод книги с таким же названием. Там рассматривалось и использование доллара, но я решил вынести это еще раз в отдельный пост. Если интересует эта тема, перейдите в рубрику, в самый ее конец, и по очереди читайте записи, они идут в порядке изучения курса.

  2. Михаил says:

    Насколько вы знаете, использование jQuery вместо $ действительно не случайно.
    И поломать намеренно реализованную систему защиты ради того, чтобы можно было копипастить код сомнительного качества — это очень плохая практика. Если вам так неймется, сделайте все с $, а потом пробегитесь автозаменой.

    • Architect Of Ruin says:

      Да, про знак доллара здесь сказано:

      Сделано это для того чтобы не создавать конфликтов с другими библиотеками Javascript, использующими знак доллара (к примеру, MooTools или Prototype).

      Так что, как говорится, используем на свой страх и риск.

  3. casepress says:

    Если работает конструкция типа: jQuery(document).ready(function( $ )
    Почему не работает конструкция типа: jQuery(«#cp_action_save_deadline»).click(function($)?

    Если ее применяю, то внутри знак $ выдает ошибку. Меняю на jQuery и все включается.

    При том что вроде бы конструкции похожи :)

    Или я слишком многого захотел? )

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.