Programing

같은 페이지에서 다른 버전의 jQuery를 어떻게 실행합니까?

crosscheck 2020. 11. 8. 09:20
반응형

같은 페이지에서 다른 버전의 jQuery를 어떻게 실행합니까?


우리 회사는 페이지에서 ASP.NET 컨트롤을 렌더링하는 제품을 구입했습니다. 이 컨트롤은 jQuery 1.2.3을 사용하고이를 참조하기 위해 페이지에 스크립트 태그를 추가합니다. 컨트롤 개발자는 컨트롤이 어떤 방식 으로든 수정 된 경우 (다른 버전의 jQuery를 참조하는 수정 포함) 컨트롤 사용을 지원하지 않습니다.

내 자신의 컨트롤 개발을 시작하려고하며 jQuery 1.3의 기능과 속도 향상을 사용하고 싶습니다. 이러한 컨트롤은 모두 동일한 페이지에 있어야합니다.

구입 한 컨트롤에서 jQuery 1.2.3을 사용하고 새로운 사용자 지정 개발에서 jQuery 1.3을 사용하도록 허용하려면 어떻게해야합니까? 또 다른 버전의 jQuery를 참조하는 데 필요한 추가 컨트롤을 사용하려면 궁금한 점이 있습니까?


충돌 방지 모드 에서 jQuery 버전을 실행하여이를 달성 할 수 있습니다 . "충돌 없음"모드는 prototype같은 다른 프레임 워크가있는 페이지에서 jQuery가 작동하도록하는 일반적인 솔루션 이며,로드하는 jQuery의 각 버전을 본질적으로 네임 스페이스하므로 여기서도 사용할 수 있습니다.

<script src="jQuery1.3.js"></script>
<script>
    jq13 = jQuery.noConflict(true);
</script>

<!-- original author's jquery version -->
<script src="jQuery1.2.3.js"></script>

이러한 변화는 사용할 jQuery를 물건 중 하나를 사용하여 호출해야 함을 의미합니다 jq13보다는 $, 예를

jq13("#id").hide();

동일한 페이지에서 두 버전을 실행하는 것은 이상적인 상황은 아니지만 대안이없는 경우 위의 방법을 사용하면 한 번에 두 가지 버전을 사용할 수 있습니다.

또 다른 버전의 jQuery를 참조하는 데 필요한 추가 컨트롤을 사용하려면 궁금한 점이 있습니까?

다른 버전의 jQuery를 추가해야하는 경우 위를 확장 할 수 있습니다.

<script src="jQuery1.3.js"></script>
<script>
    jq13 = jQuery.noConflict(true);
</script>
<script src="jQuery1.3.1.js"></script>
<script>
    jq131 = jQuery.noConflict(true);
</script>

<!-- original author's jquery version -->
<script src="jQuery1.2.3.js"></script>

변수 jq13jq131각각은 필요한 버전 별 기능에 사용됩니다.

원래 개발자가 사용한 jQuery가 마지막에로드되는 것이 중요합니다. 원래 개발자는$() jQuery 버전을 사용 한다는 가정하에 코드를 작성했을 가능성이 높습니다 . 다른 버전을로드하면로드 $한 마지막 버전에 의해 "잡기"됩니다. 이는 원래 개발자의 코드가 최신 라이브러리 버전에서 실행되고 있음을 의미하므로 noConflicts다소 중복됩니다!


ConroyP이 말했듯이 이것을 할 수 jQuery.noConflict있지만 var변수를 선언 할 때 잊지 마십시오 . 이렇게.

<script src="jQuery1.3.js"></script>
<script>
    var jq13 = jQuery.noConflict(true);
</script>

<!-- original author's jquery version -->
<script src="jQuery1.2.3.js"></script>

함수 뒤에 (jq13)을 추가하여 모든 $를 jq13에 연결할 수 있습니다 }). 이렇게

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

순서가 중요하지 않은 것 같습니다 ... 예 : http://gist.github.com/136686 . 콘솔 출력이 맨 위에 있고 모든 버전이 올바른 위치에있는 것 같습니다.


일하는 것을 거짓으로 만들다

var jq16 = $.noConflict(false);

두 번째 버전에서는 변수를 $ .noConflict (true)로 선언합니다. 그리고 jquery 코드에서 사용 된 $ 대신 선언 된 변수를 사용하십시오. 아래 코드를 확인하세요.이 코드는 jquery의 두 번째 버전 선언 후에 사용됩니다.

<script type="text/javascript">
var jQuery_1_9_1 = $.noConflict(true); function pageLoad(sender, args) {

        var $ddl = jQuery_1_9_1("select[name$=drpClassCode]");
        var $ddl1 = jQuery_1_9_1("select[name$=drpSubContractors]");
        $ddl.select2();
        $ddl1.select2();

        $ddl.bind("change keyup", function () {
            $ddl.fadeIn("slow");


        });

        $ddl.bind("change keyup", function () {
            $ddl1.fadeIn("slow");


        });
    }

참고 URL : https://stackoverflow.com/questions/528241/how-do-i-run-different-versions-of-jquery-on-the-same-page

반응형