2013-08-06 5 views
-1

, если я пишу этот код:.

(function($){}) 

Означает ли это, что в этой функции я могу писать вместо слова «функции» только «$»

Спасибо за объяснения этого.

+3

Это функция принимает один параметр называемый '$'. –

+4

Держу пари, что вам не хватает конца: '(function ($) {}) (jQuery);' или начало того, что есть: 'jQuery (function ($) {});'. – zzzzBov

ответ

1

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

jQuery(function($) { 
    $('#div').something()... 
}); 

Таким образом, вы можете быть уверены, что $ будет означать jQuery в этом контексте, даже если вы назвали jQuery.noConflict в другом месте.

Этот конкретный синтаксис, (function($){}) обычно делается так:

(function($){ 

})(jQuery); 

Это делается, чтобы создать анонимную функцию и вызвать ее с конкретным контекстом. Часто он используется для выполнения какой-либо конкретной итерации цикла для операции AJAX (например, если вы хотите сделать 5 аякс-вызовов внутри цикла, который выполняется пять раз). Пример:

for (var x = 0; x < 5; x++) { 
    (function(index) { 
     $.ajax(url, { data... }, success(data) { 
      if (data.y == index).... 
     }); 
    })(x); 
} 
+0

OK Я понимаю Thx :) – user13746

+2

Возможно, вы захотите объяснить, что jQuery явно передает объект 'jQuery' этой функции, который обозначается параметром' $ '. Это не волшебно случиться – Ian

1

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

Это можно назвать так:

(function($){ SOME_OPERATIONS_WITH_$ ;})(theObjectBeingPassedAsDollar)

например. объект JQuery может быть передан в данном случае, и она будет использоваться в анонимной функции как $

Это предупредит HelloWorld:

(function($){ alert($.one + $.two); })({'one':'Hello','two':'World'}) 

демо: http://jsfiddle.net/Pg9s4/

+0

Большое спасибо Это мне очень помогло :) – user13746