2013-10-02 3 views
0
<script> 
jQuery(function($) { 
    $('#container').jstree(); 
}); 
</script> 

$ передано в анонимную функцию, что это значит?

+0

Возможный дубликат [Что делает (функция ($) {...}) (jQuery); do/mean?] (http://stackoverflow.com/questions/2464635/what-does-function-jquery-do-mean) – JJJ

ответ

3

jQuery Documentation

Знак доллара ($) на самом деле является псевдонимом для функции JQuery. И согласно документации, если вы передадите обратный вызов в качестве аргумента для этой функции, он будет выполнен, когда DOM будет готов.

+2

Это звучало слишком технично даже для меня, чтобы понять ... можете ли вы добавить тупиковую версию пожалуйста? – AaronHatton

0

$ является псевдонимом jQuery.

Таким образом, вы могли бы также написать jQuery('#container').jstree();

+0

Стоит отметить, что '$' - это просто допустимое имя переменной в javascript - например, 'a' или' b' - не что-то внутренне магическое. Это было не очевидно для меня много лет назад, когда я впервые учился. –

+0

Также стоит отметить, что вопрос касается анонимной функции, а не ее содержимого. – JJJ

2

Read Documentation

jQuery(function($) { 
    // Your code using failsafe $ alias here... 
}); 

и

$(function() { 
    // Document is ready 
}); 

Используйте как ярлык для $ (документ) .ready() и аргумента написать безотказный код jQuery с использованием псевдонима $, не полагаясь на глобальный псевдоним.

1

Он делает «$» локальную переменную и, таким образом, изящно избегает конфликтов с любыми другими переменными, которые могут использовать символ «$».

Эти функции выполняют одни и те же действия - выполняют код, когда DOM готов.

«$» и «jQuery», которые принимают функцию в качестве аргументов, были созданы как ярлыки, чтобы избежать повторения такой общей конструкции. Принятие функции, принимающей $ в качестве первого аргумента, является дополнительным синтаксическим сахаром - теперь вы получаете удобство закрытия без необходимости делать это самостоятельно.

-1

JQUERY DOC :

jQuery() — which can also be written as $() — searches through the DOM ... 

Таким образом:

$("div.foo"); равна jQuery("div.foo");

-1

Вкратце: $ ссылается на глобальную переменную, заданную JQuery для представления себя.

В не так коротко: Javascript конвенция переменного именование позволяет начать переменный с «$», «_» или любой действительный символ юникода в категории «Прописная буква (Lu)», «Строчная буква (Ll) "," Lettercase (Lt) "," Письмо модификатора (Lm) "," Другое письмо (Lo) "или" Номер письма (Nl) ".

Поэтому вам разрешено иметь переменную $ или _ на своем собственном. Многие javascript-фреймворки/библиотеки/вещи используют этот факт для сокращения своих вызовов.

-1

Итак, в JQuery (Javascript library) знак доллара является псевдонимом/ссылкой на функцию JQuery.

В этом случае первая строка эквивалентна $ (document) .ready(), которая ожидает завершения DOM перед загрузкой.

Другие слова, функции, которые вы хотите запустить после завершения загрузки DOM (почти все функции на самом деле), которые вы хотите поместить внутри этого, как jstree().

Here is a relevant S.O. question

Here is a link to JQuery Documentation on Callbacks

0

Код выглядит как попытка на Module Pattern в JavaScript. Преимущество заключается в том, что анонимная функция имеет закрытие, которое помогает поддерживать конфиденциальность переменных внутри него и поддерживает состояние его локальных переменных и функций.

Правильный способ реализации шаблона является:

(function($) { 
    ... 
})(jQuery); 

, где (...)() является примером IIFE (Немедленно Вызванный Function Expression). Выражение функции вызывается конечным (), которое, если оно содержит jQuery, передает функцию jQuery в область анонимной функции как $, так как это то, что у нее есть как имя параметра. Преимущество этого шаблона заключается в том, что люди могут писать плагины jQuery и могут сохранять свою собственную копию функции и переменных jQuery и вызывать их независимо от того, что они хотят, что помогает разрешать конфликты имен.

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

Смежные вопросы