添加其他脚本时Javascript无法正常工作

时间:2011-10-06 06:26:50

标签: javascript jquery

好的伙计们请原谅我的无知。我是javascript的新手所以所有的帮助都很受欢迎。我一直在尝试实施这些解决方案,但它不起作用。这就是我对修改过的代码的看法:

    <script type="text/javascript">
    jQuery.noConflict() // return `$` to it's previous "owner"
    (function($){ // in here you're assured that `$ == jQuery`
    $(document).ready(function(){  
    $('#slider1').tinycarousel()
    $('a.fancybox').fancybox()
    $('textarea, select').uniform()
    $('#slider').nivoSlider ({ pauseTime: 6000, effect: 'sliceDown'})
    })
    })(jQuery)
    </script>

当我这样做时,它会使上述所有内容停止工作。

另外,我还有另一个声明

    function $(id) {
    return document.getElementById(id);
}

我不知道我是否理解如何处理它,因为如果我把它取下它随之停止工作(它是一个双滑块)

再次感谢


我是一个javascript新手,所以我道歉:0)

我在网站上使用这个javascript:

    <script type="text/javascript">        
    $(document).ready(function(){  
        $('#slider1').tinycarousel();
        $('a.fancybox').fancybox();
        $('textarea, select').uniform();
        $('#slider').nivoSlider ({ pauseTime: 6000, effect: 'sliceDown'});
    });
    </script>

还有另一个脚本在开头包含这个,这使得其他一切都停止工作。一旦我删除它一切都有效。有没有办法将这些联合起来?还是他们需要分开?

    function $(id) {
        return document.getElementById(id);
    }

提前致谢...

4 个答案:

答案 0 :(得分:5)

使用noConflict发布$,使用jQuery()代替$()进行jQuery操作:

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
    $.noConflict();
    // Now $('x') uses the custom $ function.
</script>

答案 1 :(得分:2)

问题是你已经声明了一个名为$的函数,它现在会覆盖由jquery创建的jquery引用。

因此,当您执行$('#slider1').tinycarousel();时,您现在希望在函数返回的对象上定义一个方法tinycarousel

如果您仍想继续使用jquery和您的功能,则必须使用

jQuery("something").tinycarousel()

答案 2 :(得分:1)

最好不要直接使用$函数来“保护”代码免受此类问题的影响,而是创建一个明确定义$ = jQuery的新范围:

jQuery.noConflict() // return `$` to it's previous "owner"
(function($){ // in here you're assured that `$ == jQuery`
    $(document).ready(function(){  
        $('#slider1').tinycarousel()
        $('a.fancybox').fancybox()
        $('textarea, select').uniform()
        $('#slider').nivoSlider ({ pauseTime: 6000, effect: 'sliceDown'})
    })
})(jQuery)

或者,jQuery将自己传递给DOMReady简短形式:

jQuery.noConflict()

jQuery(function($){
        $('#slider1').tinycarousel()
        $('a.fancybox').fancybox()
        $('textarea, select').uniform()
        $('#slider').nivoSlider ({ pauseTime: 6000, effect: 'sliceDown'})
})

将此作为标准做法,您将来可以避免此问题。

答案 3 :(得分:-1)

您应该删除第二个脚本,因为jQuery本身包含ID选择器,它将使用id作为要求从dom中选择元素。

删除此

function $(id) {
return document.getElementById(id);
}

从现在起执行此操作以选择ID

$(document).ready(function(){


$("#myCarousel").fadeIn();

});