在外部文件中使用选择器分离JQuery脚本不起作用?

时间:2011-12-16 20:09:55

标签: javascript jquery

我有一个JQuery Selector和一个与之关联的事件。我想将它保存在外部文件中,只需复制并直接保存即可。我看到的是具有选择器的外部JavaScript不起作用。有人可以解释为什么?

注意:我能够在HTML文件中使用相同的功能,但在外部化时。它只是不起作用。 我的脚本如下: -

 $('#pervious').click(function() {
        var presentSlide = $('.visible').attr('id');
        var tempArr = presentSlide.split("-");
        var persentSlideNo = tempArr[1];
        var perviousSlideNo = Number(persentSlideNo) - 1; if (perviousSlideNo > -1) 
        {
        var perviousSlide = "Slide-" + perviousSlideNo;

            $('#' + presentSlide).fadeOut('slow',function(){
            $(this).removeClass('visible').addClass('hidden');
            });
            $('#' + perviousSlide).fadeIn('slow',function(){
            $(this).removeClass('hidden').addClass('visible');
            });
        }

    });

3 个答案:

答案 0 :(得分:3)

你是如何包含这个脚本的?

请注意,它需要低于id=pervious元素的定义,或者它需要追踪它(例如document.ready),否则元素将不存在,并且不会无所不能。

<强>更新 要重新创建,需要在创建pervious元素之后执行。将它放在外部文档中可能会导致它在创建pervious HTML元素之前执行,因此它不起作用。您可以将它放在外部文件中,当然,只需确保元素被加载,例如

$(document).ready(function() {
    $.getScript('http://yoursite.com/extrascript.js');
});

答案 1 :(得分:2)

在您确定通过警报确实链接到它之后,请将代码包装起来:

$(function(){
    // place your code inside here for ready event
});

您正在做的是在文档准备好之前运行选择器。选择器在dom存在之前运行,并且选择器中没有结果,因此您不会附加任何内容。

答案 2 :(得分:2)

您必须包含以下形式的脚本:(包括闭包标签)

<script src="myexternal.js" type="text/javascript"></script>

不是这些中的任何一个:

<script src="myexternal.js" type="text/javascript" />
<script src="myexternal.js" />
<script src="myexternal.js" ></script>

表单或它不会总是正确呈现,因此不会执行。

当然,既然你正在使用jQuery,你应该把你的代码放在jQuery库链接之后,并将你的代码包含在文档中,就像其他人已经证明的那样。