2013-08-10 5 views

ответ

1
(function($) { 
    $(function() { 
    // more code using $ as alias to jQuery 
    }); 
})(jQuery); 
// other code using $ as an alias to the other library 

Верните $ псевдоним, а затем создать и выполнить функцию, чтобы обеспечить $ в качестве псевдонима JQuery внутри области видимости функции. Внутри функции исходный $ объект недоступен. Это хорошо работает для большинства плагинов, которые не полагаются на какую-либо другую библиотеку.

2

Вы создаете новую область видимости в javascript с помощью функции (поскольку {} не создает новую область). Затем вы немедленно вызываете эту функцию и захватываете JQuery из внешней области и делаете ее доступной внутри как переменная $

+0

не совсем верно. Там тоже «с», и еще один я не помню. –

+0

Да, да. Обновленный ответ :) – basarat

1

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

Это означает:

// but execute itself 
function ($) { 
    // to-do 
} 
0

Переходя $ к function предотвращает confliction от других libraries, как,

<!-- Using the $ inside an immediately-invoked function expression. --> 
<script src="prototype.js"></script> 
<script src="jquery.js"></script> 
<script> 
    jQuery.noConflict(); 
    (function($) { 
     // Your jQuery code here, using the $ 
    })(jQuery); 
    //Passing jQuery from here prevents $ variable which is also used by prototype 
</script> 

Read avoid-conflicts-other-libraries

2

Это самообслуживания Выполнение Closure (само выполнение функции).

Здесь вы передаете jQuery этой функции self-execute, которая отображает jQuery в знак доллара. Таким образом, он не может быть перезаписан другой библиотекой в ​​рамках ее выполнения.

Вам нужно будет написать такой синтаксис, при написании нового плагина, как вы предпочитаете, чтобы инкапсулировать код в отдельном пространстве имен

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