我有一个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');
});
}
});
答案 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库链接之后,并将你的代码包含在文档中,就像其他人已经证明的那样。