문제

프로토 타입과 jQuery에서 $ 함수를 통합 할 수있는 JavaScript 기능이 있습니까?

예, 이것은 내가 지금 직면하고있는 실제 사용 사례입니다. 프로토 타입에서 $ 함수를 발견하고 jQuery의 $는 서로 충돌하고 있습니다. 나는 우리가 jQuery.noconflict ()를 프로토 타입으로 되돌릴 수 있도록 jQuery.noconflict ()를 다시 만들 수 있다는 것을 알고 있지만, 그렇게함으로써 해당 $ 함수를 사용하는 jQuery-specific javacript 코드를 다시 작성하거나 코드 블록에 특정 jQuery를 사용해야합니다 (예 : 익명 기능).

두 라이브러리에 기존 코드를 다시 작성하지 않고 한 페이지에 사용하지 않고 더 쉬운 방법이 있습니까?

이 질문에 대답 할 수있는 코드는 다음과 같을 수 있으며 피드백에 크게 감사합니다.

<script type="text/javascript" src="/path/to/prototype.js"></script>
<script type="text/javascript" src="/path/to/jquery.js"></script>
<script type="text/javascript">
/* <![CDATA[ */
var $j = jQuery.noConflict();
var $p = $; // reference to prototype's $
var $ = function(E, F){
  var isJQuery = true;

  //TODO: logic to determine which $ to use here YOUR SUGGESTION HERE ;-)

  var result = null;
  if(isJQuery){
    result = $j(E, F);
  } else { // prototype
    //TODO: code to delegate prototype $
  }

  return result;
}
/* ]]>*/
</script>

// ... any existing javacode jQuery and Prototype using $ function. 

감사.

업데이트: 더 명확하게 질문을 다시 작성하십시오.

도움이 되었습니까?

해결책

우선, 두 라이브러리가 같은 페이지에 포함되어야하는 유용한 사례를 거의 찾을 수 없습니다. 따라서 하나를 제거하는 것을 고려할 수 있습니다.
이것이 플러그인 사용 때문이라고 생각하지만 상대 플러그인 목록을 살펴보십시오. 대안이 있다고 확신합니다.

둘째, jQuery 특정 코드의 경우 익명 기능 트릭을 사용하여 다시 작성하기가 매우 쉽습니다.

(function($){
  ... your code here ...
})(jQuery);

이것은 이벤트에 바인딩하기보다는 전역 변수 나 방법을 넣지 않는 대부분의 경우에 작동합니다.

다른 팁

나는 항상 Gizmo의 예와 비슷한 모든 jQuery 코드를 함수에 넣는 습관을 들었습니다.

jQuery(function($) {
    // jQuery code here, using $
});

이것은 Document.ready Event Handler와 동일합니다.

JQuery는 프로토 타입으로 잘 연주하는지 확인했습니다. 자세한 내용은이 페이지를 확인하십시오. 다른 라이브러리와의 충돌을 피합니다.

나는 이전에 같은 페이지에서 사용 된 두 라이브러리를 보았으며 일반적으로 한 페이지가 다른 라이브러리를 사용하고 다른 페이지를 사용하는 페이지에있는 타사 앱 때문입니다. 그러나 모든 개발을 직접하고 있다면, 나는 하나를 고수하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top