2012-08-17 2 views
2

코드베이스가있는 응용 프로그램의 플러그인으로 작업하고있어 업데이트 문제로 인해 변경하고 싶지 않습니다.여러 JQuery 버전 및 noConflict 사용

응용 프로그램에 헤더에 Jquery 1.3.2가 포함되어 있으며 사이트 전체에 많이 사용됩니다. 이것에 대해 생각하지 않고 버전 1.8.0 을 사용하여 플러그인을 작성했으며 원래 응용 프로그램의 기능이 엉망이되었습니다.

저는 noConflict 메소드를 구현하려고했지만 성공하지 못했습니다.

# Site loads jQuery1.32 and other jQuery plugins 

# My awesome php & html code 

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.js"></script> 
<script type="text/javascript"> 
var $jq = jQuery.noConflict(true); 
$jq.DoSomeJQueryStuff(); 
</script> 

이 시나리오에서 어떻게 noConflict를 구현할 수 있습니까?

+0

v1.3 코드에서 v1.8 플러그인을 호출하는 방법을 묻고 있습니까? – nnnnnn

답변

0

나는 이것이 필요하다고 생각합니다.

우리는 링크가이 순서에 추가한다고 가정하면 :

  1. JQuery와-1.3.2.js
  2. JQuery와-1.8.0.js

우리는이 있습니다

jQuery.noConflict(); 

// here you can execute javascript with jquery version 1.3.2 
console.log($.fn.jquery); 


jQuery(function($){ 
    // here you can execute javascript with jquery version 1.8.0 
    console.log($.fn.jquery); 
}); 

여기에 대한 예시는 Jsfiddle입니다.

1

noConflict() 중 먼저 오는 쪽 (또는 둘 다)에 전화하기를 원할 것입니다. 첫 번째 인스턴스에서 호출하지 않으면 아래 스크립트 정의를 포함 할 때 이미 "충돌"이 발생합니다.

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script> 
<script type="text/javascript"> 
    var $jQ180 = jQuery.noConflict(true); 
    document.write($jQ180().jquery); // 1.8.0 
</script>​ 

... 

<script type="text/javascript" src="http://code.jquery.com/jquery-1.3.2.js"></script> 
<script type="text/javascript"> 
    document.write($().jquery); // 1.3.2 
</script> 
+0

문제는 1.3.2를 사용하여 코드를 변경하고 싶지 않다는 것입니다. – Artmann

+0

먼저 1.8을 정의 할 수 있습니까? 예를 들어, 1.3.2 정의 위의 머리에 1.8을 배치하고 그것에 noConflict()를 호출 할 수 있다면 나는 괜찮다고 생각합니다. –

+0

이 작업은하지만 피하려고하는 주요 응용 프로그램 헤더의 코드를 변경하도록합니다. – Artmann