$ (문서). 준비된 속기


245

다음과 같은 속기 $(document).ready 입니까?

(function($){

//some code

})(jQuery);

이 패턴이 많이 사용되는 것을 보았지만 이에 대한 참조를 찾을 수 없습니다. 의 약어 인 경우 $(document).ready()작동하지 않는 특별한 이유가 있습니까? 내 테스트에서 항상 준비 이벤트 전에 시작되는 것 같습니다.


언급 된 패턴 함수 내에 정의 된 변수 (예 var somevar;
:)

3
이 코드는 $가 해당 함수 블록 내에서 jQuery를 나타내도록하는 효과가 있으므로 jQuery의 $ 별칭이 비활성화되었거나 다른 것으로 정의 된 위치에 코드를 이식 할 수 있습니다.
AsksAnyway

답변:


253

줄임말 $(document).ready(handler)$(handler)( handler기능이있는 곳 )입니다. 여기를 참조 하십시오 .

귀하의 질문에있는 코드는와 아무런 관련이 없습니다 .ready(). 오히려 jQuery 객체를 인수로 사용하여 즉시 호출되는 함수 표현식 (IIFE)입니다. 그 목적은 최소한 $변수 의 범위를 자체 블록 으로 제한하여 충돌을 일으키지 않는 것입니다. 일반적으로 jQuery 플러그인이 사용하는 패턴을 확인합니다 $ == jQuery.


14
기술적으로 이것은 즉시 호출되는 함수 표현식 입니다. 그것은 자기 호출 이었다면, 그것은 내부에서 스스로를 부를 것입니다. 웹을 검색 iife하거나 Cowboy Alman의 유명한 블로그 게시물로 건너 뜁니다 . 세부 사항…
2540625

546

속기는 다음과 같습니다.

$(function() {
    // Code here
});

24
첫 번째 주장은 $입니다. 추가 할 수도 있습니다.jQuery(function($, undefined) {});
Raynos

5
@raynos 필요하지 않습니다. 위 코드는 별칭으로 잘 작동합니다$(document).ready(function(){ });
Kyle Trauberman

10
$첫 번째 주장으로 무료로 제공 된다는 것을 아는 것이 유용합니다 .
Raynos

3
나는 여전히 한 달에 한 번이 답변을 방문합니다.
Nugsson

89

올바른 속기는 다음과 같습니다.

$(function() {
    // this behaves as if within document.ready
});

게시 한 코드…

(function($){

//some code

})(jQuery);

… 익명 함수를 작성 jQuery하고 arg로 전달하여 즉시 실행합니다 $. 효과적으로 $하는 것은 이미 함수의 내부 코드를 가져 와서 정상적인 것처럼 실행하는 것 입니다 jQuery. :디


4
별명으로 $를 사용하는 다른 도구가로드 된 경우 $가 jQuery의 별명임을 보장 할 수도 있습니다.
Jim Wolff

16

이것은 속기입니다 $(document).ready().

게시 한 코드는 내부 코드를 상자에 $넣고 전역 네임 스페이스를 오염시키지 않고 jQuery를 사용할 수있게 합니다. 한 페이지에서 프로토 타입과 jQuery를 모두 사용하려는 경우에 사용할 수 있습니다.

여기에 문서화 : http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediately-invoked-function-expression


질문에 답변 해 주셔서 감사합니다
MarcGuay

12

이 특정 라인은 jQuery 플러그인의 일반적인 래퍼입니다.

"... 플러그인이 달러 기호를 사용하는 다른 라이브러리와 충돌하지 않도록하려면 jQuery를 달러 기호에 매핑하는 자체 실행 함수 (클로즈)에 jQuery를 전달하는 것이 가장 좋습니다. ' 실행 범위 내에서 다른 라이브러리로 덮어 쓰지 않아야합니다. "

(function( $ ){
  $.fn.myPlugin = function() {
    // Do your awesome plugin stuff here
  };
})( jQuery );

에서 http://docs.jquery.com/Plugins/Authoring


11

준비를위한 다중 프레임 워크 안전 속기는 다음과 같습니다.

jQuery(function($, undefined) {
    // $ is guaranteed to be short for jQuery in this scope
    // undefined is provided because it could have been overwritten elsewhere
});

이는 jQuery가 $and 및 undefined변수 를 사용하는 유일한 프레임 워크가 아니기 때문입니다.


또한 다음과 같이 쓸 수 있습니다(function($){ ... })(jQuery);
Mike Causer

2
또한 @MikeCauser 좋은 방법,하지만에 호출되지 않습니다 ready대신 즉시이라고,
티모 Huovinen


0

이건 어때?

(function($) { 
   $(function() {
     // more code using $ as alias to jQuery
     // will be fired when document is ready
   });
})(jQuery);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.