我有2个JS文件,名为“scripts1”,包含幻灯片和“活动链接类”的脚本,另有一个“script2”包含“Mootools gallery”脚本。
第一个问题是使用
解决了jquery和Mootools库之间的冲突
“script1”中的“jQuery.noConflict()”
但在那之后,“活动链接类”的脚本停止工作,如果我从“script1”中移除“jQuery.noConflict()”[那么Mootools库将无法工作],该工作效果很好。
我猜想必须有一些关于$ sign或其他东西的逻辑问题。如果是这样,PLZ解释背后的逻辑
顺便说一句,我甚至经历了以下解决方案,但没有结果!
无论如何,我会把下面的代码放在一边,希望你能告诉我哪里出错了。
文件“script1.js”包含以下代码:
jQuery(document).ready(function () // the slideshow function
{
jQuery('#SlidesUl').fadeSlideShow();
});
$(function () // the active link codes
{
var url = window.location.pathname,
urlRegExp = new RegExp(url.replace(/\/$/, '') + "$");
$('#Menu div span #Menu1st a').each(function ()
{
if (urlRegExp.test(this.href.replace(/\/$/, '')))
{
$(this).addClass('active1st');
}
});
});
jQuery.noConflict();
(function($) // the slideshow options and all
{
the codes
})(jQuery);
文件“script2.js”包含以下内容:
jQuery(document).ready(function ($) // the Mootools gallery codes
{
the codes
});
以下是我如何放置库和文件:
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script src="js/script1.js" type="text/javascript"></script>
<script src=" MooTools 1.4.4 " type="text/javascript"></script>
<script src="js/script2.js" type="text/javascript"></script>
非常感谢任何帮助或解释:)
答案 0 :(得分:1)
the active link class
中的代码在您调用jQuery.noConflict();
后执行(它在文档加载时执行),因此您不能再使用$
来引用jQuery了。要将此更改$
更正为jQuery
或将$
设置为ready函数的参数,该函数实际上是jQuery对象。
1
$(function () // the active link codes
{
var url = window.location.pathname,
urlRegExp = new RegExp(url.replace(/\/$/, '') + "$");
jQuery('#Menu div span #Menu1st a').each(function ()
{
if (urlRegExp.test(this.href.replace(/\/$/, '')))
{
jQuery(this).addClass('active1st');
}
});
});
2
$(function ($) // the active link codes
{
var url = window.location.pathname,
urlRegExp = new RegExp(url.replace(/\/$/, '') + "$");
$('#Menu div span #Menu1st a').each(function ()
{
if (urlRegExp.test(this.href.replace(/\/$/, '')))
{
$(this).addClass('active1st');
}
});
});
答案 1 :(得分:0)
调用$.noConflict()
后jQuery无法工作的原因是$.noConflict()
将使jQuery中默认使用的$
符号无效。
我建议将代码包装在匿名函数中。
// Null the $ symbol used by jQuery.
$.noConflict();
// anonymous function.
(function($) {
$(function() {
alert('DOM ready!');
});
})(jQuery);
修改强>:
试试这个:
// script1.js
(function($) {
$(function ()
{
$('#SlidesUl').fadeSlideShow(); // the slideshow function
// the active link codes
var url = window.location.pathname,
urlRegExp = new RegExp(url.replace(/\/$/, '') + "$");
$('#Menu div span #Menu1st a').each(function ()
{
if (urlRegExp.test(this.href.replace(/\/$/, '')))
{
$(this).addClass('active1st');
}
});
// The codes
});
})(jQuery);
// script2.js
(function($) {
$(function ()
{
// the Mootools gallery codes
});
})(jQuery);