2012-02-22 11 views
3

質問:jQueryのサイクル - 変更するオプションを動的

がどのようにHTML要素の上にマウスの相互作用を介して非同期的にjQueryのサイクルのオプションを変更しますか?


jsFiddle

Here's a working example.意向調査を実施し


上の明確化のためのコメントを参照してください:サイクルの作者から

This tweetは、それがサイクルのを修正することができますことを明らかにするオプションを非同期に使用します。

フォローアップのつぶやきで彼に尋ねたところ、彼はその主題について説明することができ、彼は(言い換えれば)「隠れている」と言いました。

サイクルのソースコードを調べたところ、彼は嘘をついていないことがわかりました。実際にはcycle.optsが存在し、明らかに使用できると思われる機能もあります(debug)。しかし、私はこれらの機能を利用することについてほとんど考えていません。

cycle.optsを使用してオブジェクトの状態を返すことはできますが、「...そして必要なものを変更する」ということはわかりません。私はOptions Reference pageを見直しました。他のオプションのデフォルトは、干渉するようには表示されません。

+0

これは非常に役に立ちました。 JSフィドルは@bububabaの答えを反映していませんか?受け入れられてはいけませんか? –

答えて

1

、一時停止オンホバー動作が初期設定後に動的に変更することはできません。これを試してみてください。回避策コードは以下に掲載されています。

質問のjsFiddleの例に基づいてこれを動作させることができませんでした。

私の場合は、いつものようにスライドショーを繰り返すことを望んでいましたが、ユーザーが最初に画像をクリックした後にホバー動作の一時停止をアクティブにしました。

デバッグした後、動的に変更したい特定のオプション、つまり「一時停止」と「pauseOnPagerHover」が最初にスライドショーを設定した後に適用されないようです。

このため、実際の理由を発見しなくても、私は以下の私の問題への実用的なソリューション、一緒にハッキング:

// After toggling image manually the first time by clicking it, enable pause on hover. 
$('.slideshow-image-link').click(function (e) { 
    e.preventDefault(); 
    // When clicked the first time, set up a hover event pausing the slideshow. 
    // It seems like changing the 'pause' option can't be done dynamically after 
    // setting up the slideshow cycle. 
    $('#slideshow-images').cycle('pause'); 
    $('.slideshow-image-link').hover(
     function() { // On mouse in. 
      $('#slideshow-images').cycle('pause'); 
     }, 
     function() { // On mouse out. 
      $('#slideshow-images').cycle('resume'); 
     } 
    ); 
}); 

はここで、上記のコードを実証jsFiddleです。

+0

申し訳ありませんとても長い。私はあなたのコードを[jsFiddle](http://jsfiddle.net/BuA7r/62/)で試してみることにしました。希望する能力を得ることはできませんが、間違いなく望ましい動作が得られます。私は今これを答えとして受け入れます。 – gmeben

3

私は何かが欠けていない限り、コード内のオプションを変更することはありません。あなたの方法で

$('#foo').mouseover(function(){ 
    var changedOpts = $('.shuffle').data('cycle.opts') 
    changedOpts.speed = 0; 
    $('.shuffle').data('cycle.opts', changedOpts); 
}); 
+0

これは間違いなく正しいことだと思います。 '.data'にもっと多くの議論を与えることは、これまで私には明らかだったはずです。私は、移行が瞬間的になる前に設定する必要があるという、さらにいくつかのオプションが干渉していると思います。ありがとうございました! – gmeben

+0

オプションリファレンスページを見て、私は他のオプションのデフォルトが干渉してはならないことに気付きました。謝罪します。 #fooで指定されている「ページャ」を持っているとは言いません(新しいjsFiddleの例を参照してください)。これは問題を引き起こしている可能性がありますか? – gmeben

+0

関数の3行目: '$( '。shuffle')。データ( 'cycle.opts'、changedOpts);' changedOptsは 'cycle.opts'オブジェクトへの参照であるため、不要です。 – Andy

関連する問題