我正在使用craftyslide jquery 插件http://projects.craftedpixelz.co.uk/craftyslide/。该插件用于构建幻灯片。我的网站使用 ajax 来加载内容。在我的 /#home 中,我有两张幻灯片/图片。
我遇到的问题是这个插件使用了 setInterval() 函数。
// Auto mode
function auto() {
setInterval(function () {
$slides.filter(":first-child").fadeOut(options.fadetime).next("li").fadeIn(options.fadetime).end().appendTo("#slideshow ul");
$slides.each(function () {
if ($slides.is(":visible")) {
$(".caption").css("bottom", "-37px");
$(this).find(".caption").delay(300).animate({
bottom: 0
}, 300);
}
});
}, options.delay);
}
当我在 /#home 中加载内容时,一切正常。但是,如果我通过 /#offers 之类的 ajax 调用加载另一个页面,然后我回到 /#home 页面,则转换开始失败。我得到的不是两个图像,而是它似乎检测到 4。如果我再次执行相同的过程,它将显示 6。
正如我所说,我认为这是因为 setInterval 函数。它仍在执行前一个调用的 setInterval + 新的。当我加载另一个页面时,有什么方法可以删除那个 setInterval() 吗?
提前致谢!
附加信息: 由于内容是使用 Ajax 加载的,因此在加载内容之前,我使用模板来加载页眉、页脚等。该模板在 HEAD 中加载这样的库:
<head>
<title>TITLE</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="fragment" content="!"/>
<script type="text/javascript" src="/js/ext.js"></script>
<script type="text/javascript" src="/js/craftyslide.js"></script>
</head>
当我执行 ajax 调用以加载#home 时,我正在使用一些 javascript 检索 HTML 文档。该 javascript 位于 HTML 代码的末尾。
<div id="slideshow">
<ul>
<li style="width:100%;">
<img src="bg.jpg" height="400"/>
</li >
<li style="width:100%;">
<img src="kk2_bg_optimized.jpg" height="400"/>
</li>
</ul>
</div>
<script type="text/javascript">
$(document).ready(function(){
// Load slide
$("#slideshow").craftyslide({
'width': "100%",
'height': 400,
'pagination': false,
'fadetime': 500,
'delay': 3500
});
});
</script>