Magento의 jQuery와 Prototype 호환성을 해결하는 다섯 가지 방법

Magento의 발표 버전에 있는 JS는 대부분Prototype으로 작성된 것이기 때문에 jQuery를 도입해야 한다면 변수가 충돌할 수 있기 때문에 jQuery와Prototype의 호환성을 처리하기 위한 처리가 필요합니다.
첫 번째 시나리오: Prototype을 로드한 다음 jQuery를 로드합니다.
방법1: jQuery 라이브러리와 모든 플러그인은 jQuery 이름 공간에 있고 전역 변수를 포함하여 jQuery 이름 공간에 저장됩니다.
jQuery를 사용합니다.noConflict();주요 역할은 언제든지 jQuery를 불러오면 호출할 수 있고 $기호의 사용권을 다른 js 라이브러리에 되돌려줍니다. jQuery는 자신의 이름 공간을 만들 때 다른 라이브러리의 $를 변수에 저장합니다.
<html>
<head>
  <script src="prototype.js"></script>
  <script src="jquery.js"></script>
  <script type="text/javascript" >
     //  js          $   ,              
     jQuery.noConflict();  
 
     //    jQuery     $  jQuery  
     jQuery(document).ready(function (){
       jQuery("div").hide();
     }); 
 
     // Use Prototype with $(...), etc.
     $('proto').hide();
  </script>
</head>
<body></body>
</html>

방법2: $와 같은 짧은 문자를 사용하고 싶다면 jQuery를 사용하십시오.noConflict()의 반환 값은 변수에 값을 지정합니다.이 변수는 jQuery의 새 줄임말입니다. 물론 $이외의 임의의 문자열을 사용할 수 있습니다. 예를 들어:
<html>
<head>
  <script src="prototype.js"></script>
  <script src="jquery.js"></script>
  <script type="text/javascript" >
     //$j    jQuery,         
     var  $j = jQuery.noConflict();  
 
     // Use jQuery via $j(...)
     $j(document).ready(function (){
       $j("div").hide();
     });  
 
     // Use Prototype with $(...), etc.
     $('proto').hide();
  </script>
</head>
<body></body>
</html>

방법3: $를 사용하고 싶지만 다른 문자를 사용하고 싶지 않아도 된다.그리고 보통 프로그래머들은 이렇게 하는 것을 좋아한다. 왜냐하면 이렇게 쓴 코드는 원래의 $기호를 거의 바꾸지 않기 때문이다.그것은 이름 공간의 개념을 이용하여 모든 jQuery 코드를 문서의ready 이벤트 이름 공간 범위에 봉인하는 것이다. 예를 들어: jQuery (document).Magento 노트는 jQuery 코드를 입력하는 ready를 선호합니다.
<html>
<head>
  <script src="prototype.js"></script>
  <script src="jquery.js"></script>
  <script type="text/javascript" >
    jQuery.noConflict();  
 
    // Put all your code in your document ready area
    jQuery(document).ready(function ($){
      //                $       
      $("div" ).hide();
    });  
 
    // Use Prototype with $(...), etc.
    $('proto' ).hide();
  </script>
</head>
<body></body>
</html>

두 번째 경우: 먼저 jQuery를 불러오고 Prototype을 불러옵니다
이 순서대로 불러오면 다른 js 라이브러리의 $기호가 jQuery에 의해 점용되는 문제가 없습니다.따라서 다른 js 라이브러리의 코드는 수정 없이 $를 사용할 수 있고, jQuery는 $를 대체할 수 있습니다.예:
<html>
<head>
  <script src="prototype.js"></script>
  <script src="jquery.js"></script>
  <script type="text/javascript" >
  //    jQuery   jQuery(...)
  jQuery(document).ready(function (){
    jQuery("div" ).hide();
  });  
 
  //    Prototype  ,  $(...),
  $('someid' ).hide();
  </script>
</head>
<body></body>
</html>

또는 jQuery처럼 긴 문자를 쓰고 싶지 않으면 다른 방법을 사용할 수 있습니다.
var  $j = jQuery;

간단하게 $j를 실현하는 것이 가장 좋은 방법일 수도 있습니다.
단, jQuery로만 코드를 쓰고 싶을 때, 이름 공간을 통해 $, 즉 jQuery 소스 코드와 같은 방법을 사용할 수 있습니다.
<script type="text/javascript" >
    (function($) {
    /*         ,       $     jQuery,      $ jQuery  ,     prototype    js 
    */ }
    )(jQuery)
</script>

참조 출처:http://docs.jquery.com/Using_jQuery_with_Other_Libraries

좋은 웹페이지 즐겨찾기