我有一个包含 jquery 的第三方脚本(这会导致事情中断)。我使用的是 1.6 版本,而外部脚本使用的是旧版本。
如何强制只加载一个版本的 jquery,它是我在页面上的版本而不是外部加载的版本?
我有一个包含 jquery 的第三方脚本(这会导致事情中断)。我使用的是 1.6 版本,而外部脚本使用的是旧版本。
如何强制只加载一个版本的 jquery,它是我在页面上的版本而不是外部加载的版本?
这实际上很容易做到,使用 jquery.noConfict();
<script src='jquery-1.6.js'></script>
<script>
var jq16 = jQuery.noConflict();
</script>
<script src='jquery-1.4.2.js'></script>
<script>
var jq142 = jQuery.noConflict();
</script>
然后,您可以让函数使用 $() 命名空间,如下所示:
(function($) {
$('<button>Use jQuery 1.4.2</button>')
.click(function() {
alert('Top: ' + $(this).offset().top + '\n' +
'jQuery: ' + $.fn.jquery);
})
.appendTo('body');
})(jq142);
此页面上有一个更详细的示例和一些额外的提示。
使用.noConflict()代替?
例如:
我<head>
在 HTML 文档里面有这个:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<script type="text/javascript">
jQuery.noConflict()
jQuery16 = jQuery
</script>
在我的 jQ 脚本中,我将其称为:
jQuery16(document).ready(function($){
$('.textarea').text(' Hello World! ');
});
这样做我确信我的脚本不会干扰使用其他/旧版本 jQuery 的外部。