私は craftyslide jquery プラグインhttp://projects.craftedpixelz.co.uk/craftyslide/を使用しています。このプラグインは、スライドショーの作成に使用されます。私の Web は ajax を使用してコンテンツをロードしています。私の /#home には、2 つのスライド/写真があります。
私が得ている問題は、このプラグインが 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 ページに戻ると、遷移が失敗し始めます。2つの画像の代わりに取得すると、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>
#home をロードするために ajax 呼び出しを行うと、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>