jQuery和原型兼容性

时间:2013-10-22 16:55:34

标签: javascript jquery prototype

我正在尝试组合几个库 - 其中一些依赖于prototype.js,一些依赖于jQuery。

两组库都使用“$”,分别由prototype和jQuery定义。

我有办法确保每组库都引用正确的$吗?我希望能够在我的代码中调用两组库中的函数。

1 个答案:

答案 0 :(得分:4)

使用闭包:

(function($) {
    //jQuery stuff
      $('.elem') // $ refers to jQuery
})(jQuery);

否则使用jQuery noConflict:

<!-- Putting jQuery into no-conflict mode. -->
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>

var $j = jQuery.noConflict();
// $j is now an alias to the jQuery function; creating the new alias is optional.

$j(document).ready(function() {
    $j( "div" ).hide();
});

// The $ variable now has the prototype meaning, which is a shortcut for
// document.getElementById(). mainDiv below is a DOM element, not a jQuery object.
window.onload = function() {
    var mainDiv = $( "main" );
}

</script>

为了扩展这个,你可以使用类似'j'的东西来表示jQuery的东西并保留美元符号用于原型:

var j = jQuery.noConflict();

// Do something with jQuery
j( "div p" ).hide();

// Do something with another library's $()
$( "content" ).style.display = "none";