2010-11-30 10 views
1

私はアコーデオンのメニューを自動的に循環させようとしており、私が見つけたすべてのことは指示については非常に曖昧です。サイクル・プラグインを使用してサイクル・スルーを行うことができたとの回答が2つ見つかりました。これが私の試みです。私はサイクル機能を正しく動作させることができません。私はそれについて正しいことをやろうとしているのですか?私のコードで何を忘れてしまったのでしょうか?自動アコーディオン

私はjQueryで非常に新しいので、これはすべて私のために少し圧倒されています。ありがとう。

<script type="text/javascript" > 
$(document).ready(function(){ 
lastBlock = $("#a1"); 
maxWidth = 380; 
minWidth = 50; 

$("#slide ul li a").hover(
    function(){ 
    $(lastBlock).animate({width: minWidth+"px"}, { queue:false, duration:400 }); 
$(this).animate({width: maxWidth+"px"}, { queue:false, duration:400}); 
lastBlock = this; 
    } 
); 
}); 
$(function() { 
$('#slide').cycle({ 
    fx:  'slideY', 
    easing: 'bounceout', 
    delay: -4000 
}); 
}); 
    </script> 

<div id="slide" class="cycle"> 
<ul> 
    <li> 
    <a id="a1"> 
     <img src="image" /> 
    </a> 
    </li> 
    <li> 
    <a> 
     <img src="image" /> 
    </a> 
    </li> 
    <li> 
    <a> 
     <img src="image" /> 
    </a> 
    </li> 
    <li> 
    <a> 
     <img src="image" /> 
    </a> 
    </li> 
</ul> 
</div> 
+0

このアコーディオンについてお話ししていますか? http://jqueryui.com/demos/accordion/ ...サイクルプラグイン(http://jquery.malsup.com/cycle/)は画像用です。では、あなたは何をしようとしていますか? – Mottie

+0

あなたが知らなかった場合には、誰かにあなたのためのメッセージがあることを知らせるために、 '@ {name}'を使用してください。 '@ Fudgey'を使用すると、その人はメッセージフラグを取得します。 – Mottie

+0

@ {name}の@Fudgeyのおかげで、私はこのチュートリアルをアコーディオンのhttp://designreviver.com/tutorials/jquery-examples-horizo​​ntal-accordion/に使ってくれたので、画像を使うことができました。私はサイクルプラグインがOKであるというイメージを使用していたので、私は考えました。これを行うより良い方法があれば、私はそれを試してみるのは間違いありません。 – Katie

答えて

1

だから私は、これはあなたが探している正確に何であるかどうかわからないんだけど、私はうまくいけば、あなたのソリューションを得るのを助けるために迅速な解決策を書いた:

HTML

<div id="slide" class="cycle"> 
    <ul> 
     <li> 
      <a id="a1"> 
       <img src="image" /> 
      </a> 
     </li> 
     <li> 
      <a id="a2"> 
       <img src="image" /> 
      </a> 
     </li> 
     <li> 
      <a id="a3"> 
       <img src="image" /> 
      </a> 
     </li> 
     <li> 
      <a id="a4"> 
       <img src="image" /> 
      </a> 
     </li> 
    </ul> 
</div> 

jQueryの

var lastBlock = $("#a1"); 
var maxWidth = 166; 
var minWidth = 35; 
var counter = 0; 
var myInterval = 0; 

$("#slide ul li a").mouseenter(

function() { 
    $(lastBlock).animate({ 
     width: minWidth + "px" 
    }, { 
     queue: false, 
     duration: 400 
    }); 
    $(this).animate({ 
     width: maxWidth + "px" 
    }, { 
     queue: false, 
     duration: 400 
    }); 
    lastBlock = this; 
    clearInterval(myInterval); 
}).mouseleave(function() { 
    myInterval = setInterval(doSomething, 4000); 
}); 

function doSomething() { 
    var i = counter++ % 4 + 1; 
    $("#a" + i).trigger("mouseenter"); 
    $("#a" + i).trigger("mouseleave"); 
} 

myInterval = setInterval(doSomething, 4000); 

したがって、この解決策では、間隔は、サイクルを通り、イベントmouseenter()およびmouseleave()をトリガするように設定されています。あなたのマウスが要素の上にある間、画像のサイクリングを望まないかもしれないので、間隔はmouseenter()でクリアされ、mouseleave()の間に再び設定されます。リファクタリングできる混乱する部分は、モジュラス演算を持つカウンタを使用してイメージを循環させる方法です。各<a>にIDを追加して、最後に番号を増分変更しています。

ここをクリックしてください:http://jsfiddle.net/Ck3aZ/

+0

ありがとうございます。 – Katie

+0

私はまだ質問があります...サイクルプラグインのjqueryファイルと私のヘッダーの通常のjqueryファイルをリンクするはずですか?私は今そこに2つあり、私はあなたがこの例で得た素敵な仕上げを得ていないようです。 – Katie

+0

jquery-1.3.2.min.jsとjquery.cycle.min.jsそれは間違っていますか? – Katie

関連する問題