jquery$명명자와 다른 프레임워크의 충돌 문제 해결

4493 단어 jquery
jquery는 충돌을 해결하기 위해 noConfilict API를 제공합니다.
사용 방법:
jQuery.noConflict (): 이 함수를 실행하면 변수 $의 제어권을 처음으로 실행하는 라이브러리에 넘깁니다.
jQuery.conflict (true): $와 jQuery의 제어권을 원래의 라이브러리에 돌려줍니다.
첫 번째:
jQuery.noConflict();

// Do something with jQuery

jQuery("div p").hide();

// Do something with another library's $()

$("content").style.display = 'none';

두 번째:
jQuery.noConflict();

(function($) { 

  $(function() {

    // more code using $ as alias to jQuery

  });

})(jQuery);

// other code using $ as an alias to the other library

세 번째:
jQuery.noConflict()(function(){

    // code using jQuery

}); 

// other code using $ as an alias to the other library

네 번째:
var j = jQuery.noConflict();

// Do something with jQuery

j("div p").hide();

// Do something with another library's $()

$("content").style.display = 'none';

다섯 번째:
var dom = {};

dom.query = jQuery.noConflict(true);

// Do something with the new jQuery

dom.query("div p").hide();

// Do something with another library's $()

$("content").style.display = 'none';

// Do something with another version of jQuery

jQuery("div > p").hide();

noConfilict 소스:
noConflict: function( deep ) {

    if ( window.$ === jQuery ) {

        window.$ = _$;

    }



    if ( deep && window.jQuery === jQuery ) {

        window.jQuery = _jQuery;

    }



    return jQuery;

},

jquery 소스의 맨 처음 정의는 다음과 같습니다.
(function(){ 

  var 

       // 

    _jQuery = window.jQuery,

    _$ = window.$,

       // 

})();
$ jQuery 。

deep이 비어 있을 때, "$"은 "window.$"를 덮어쓰고, "$"의 일반적인 기능은 효력을 상실하지만, jQuery는 계속 사용할 수 있습니다.새로운 라이브러리에서 '$' 를 다시 정의할 때, 'jQuery' 는 jQquery의 일반적인 기능으로 계속되며, '$' 는 jQuery의 일반적인 기능이 아닙니다. 이것은 새로운 라이브러리의 일반적인 기능입니다.
deep이 비어 있지 않을 때, ' jQuery' 를 'window.jQuery' 로 덮어쓰면, jQuery 플러그인이 효력을 잃을 수 있습니다.다른 방법으로 되돌아오는 jQuery는 실제로 덮어쓰지 않았습니다.그것을 통해dom와 같은 새로운 명칭 공간으로 완전히 이동할 수 있습니다.query = jQuery.noConflict(true); dom.query("div p").hide();

좋은 웹페이지 즐겨찾기