noConflict无法解决错误

时间:2011-11-11 08:58:49

标签: jquery

我正在使用jquery的库组。我创建了一个名为(script.php)的php文件,并在此文件中包含了所有jqueries库。无论何时何地我需要Jquery,我只需要包含这个script.php文件。虽然一切进展顺利,但我的图书馆与其他图书馆相互冲突。如果我在$(document).ready(function() {之前使用$ .noConflict(),或者在$(document).ready(function() {之后很少其他库开始冲突。我给出错误的特定文件是,<script type="text/javascript" src="js/toggle.js"></script>它有以下代码。无论如何,我可以修改代码或解决问题。

 $(document).ready(function() {

$('.toggle_block').toggleElements({
    fxAnimation:'slide',
    fxSpeed:'fast',
    className:'toggler'
});

 });

3 个答案:

答案 0 :(得分:0)

如果您有另一个使用$符号的库,那么您可以将$恢复到jQuery运行之前的状态,方法是在包含jQuery之后将其恢复正确:

$.noConflict()

然后,您可以像这样使用jQuery而不是$,并将$符号保留为其他库:

jQuery(document).ready(function() {
    jQuery('.toggle_block').toggleElements({
        fxAnimation:'slide',
        fxSpeed:'fast',
        className:'toggler'
    });
});

如果你想要的话,你当然可以为jQuery创建自己的缩写符号:

var $j = jQuery;

$j(document).ready(function() {
    $j('.toggle_block').toggleElements({
        fxAnimation:'slide',
        fxSpeed:'fast',
        className:'toggler'
    });
});

重要的问题是,一次只能有一个库使用$符号。还有其他解决方法,例如:

(function($) {
    // in this block, $ is an argument variable that has been temporarily 
    // given the value of jQuery without interfering with the value of $ outside
    // this block of code
    $(document).ready(function() {
        $('.toggle_block').toggleElements({
            fxAnimation:'slide',
            fxSpeed:'fast',
            className:'toggler'
        });
    });

}(jQuery));

答案 1 :(得分:0)

jQuery.noConflict()的API documentation说明了这一点:

  

如果我们需要在jQuery旁边使用另一个JavaScript库,我们可以   通过调用将$的控制权返回给另一个库   $ .noConflict()

这意味着只要您运行$.noConflict()$变量就不再是jQuery的别名。因此这段代码:

$(document).ready(function() {
    // ...
});

...正在尝试将jQuery方法与其他库一起使用。

你可能想要这个:

// In the outer scope, we use jQuery
jQuery(document).ready(function($) {
    // In this scope we can use $
});

答案 2 :(得分:-1)

jQuery.noConflict()返回jQuery的实例。致电noConflict没有任何意义。

出于使用noConflict的目的,

var $q = jQuery.noConflict(); //$q = independent instance of jQuery
$q(document).ready(function () {

    $q('.toggle_block').toggleElements({
        fxAnimation: 'slide',
        fxSpeed: 'fast',
        className: 'toggler'
    });

});