2012-03-23 18 views
0

joomlaのWebサイトでwidgetkit libを使って作成した2つのスライドショーを同期しようとしています。ユーザーが次のスライドをクリックすると、もう1つはslideshow.jsのnextSlide()関数も実行します。前と同じです。私が持っている問題は、それらのスライドショーを作成するための匿名関数を使用するウィジェットキットであり、作成された後にそれらのグローバル参照はありません。私の制限されたプログラミングの知識では、一度クリックハンドラ内で他のスライドショーのnextSlide関数を起動することはできません。Javascriptの匿名関数の同期

誰かが一見することができれば、大歓迎です。

EDIT:

もちろん私は、例えば、Webページ

http://www.yootheme.com/widgetkit/examples/slideshow

をリンクするのを忘れ鉱山はわずか2スライドショーと似ていますが、唯一のローカルサーバー上に残っています。

+1

どう見てください。これまでに何が得られたのか分かりますか? –

+1

関連するコードの一部を投稿して、スタックオーバーフローを歓迎してください。 –

+1

私はコードを見ることができる場所への参照を追加することを忘れてしまったと思います。あなたの投稿を編集してください。 –

答えて

0

ここでウィジェットキットを簡単に見てみることもできます。 jqueryを使用すると、次の子を持つスライドのクラスを持つオブジェクトを検索し、他のすべてのオブジェクトをクリックすることができます。下記のコードはテストされていませんが、正しい方向に指摘してください。ストッププロパゲーションを呼び出さないか、またはデフォルトを抑止しない限り、元のクリックハンドラはまだ起動します。

var slideshow_count = $('.slides .next').length; 
var cascade_countdown = 0; 

$('.slides .next').each(function() { 
    $(this).click(function() { 

    // stop an infinite loop if we're already cascading till we've done it for all the elements. 
    if(cascade_countdown != 0) { 
    cascade_countdown--; 
    return true; 
    } 

    // we don't include the slideshow we're clicking in this count 
    cascade_countdown = slideshow_count - 1; 
    var clicked_el = this; 

    $('.slides .next').each(function() { 
     // only click elements that aren't the initiator 
     if(this !== clicked_el) { 
     $(this).click(); 
     } 
    }); 
    }); 
}); 
+0

私はウィジェットキットのクリックハンドラでロジックを維持したいと考えていましたが、私は関数とオブジェクトがjavascriptでどのように機能するかについてもっと学ぶ必要があると思います。あなたが提案した外部委任/過負荷は、うまく動作します、ありがとう! – user1287307