2011-09-14 49 views
0

jQueryを使用して簡単な画像スライドショーを作成しました。上記の各画像をクリックすると同じ機能を実行するには、「次へ」ボタンが必要です。私はnoobieなので、私は問題を得ることができません。関数を呼び出す

Demo

$('.show').each(function(){ 
     var $this = $(this); 
     $this.children('li').hide().eq(0).show(); 

     var activeli = $this.find('li'); 

     activeli.click(function() { 
       var $this = $(this); 
       var $next = $this.next(); 
       if ($next.length === 0) { 
         $next = $this.parent().children(':first'); 
       } 
       $this.hide(); 
       $next.show(); 
     }); 

     // My issue is there 
     $('.next').click(function() { 
       activeli.click(); 
     }); 

}); 
+0

何が問題なのですか? –

+0

最初に、(どちらの場合でも).click()を呼び出すときに、 "activeli"の周りに$()は必要ありません。次に、htmlページにあるすべてのli要素に.clickイベントを追加します。そして、私はあなたがアクティブな要素を1つだけ持つべきだと思います。そのためには、アクティブな要素に特殊なcss形式を追加して、他の要素から1つだけ外してください。 – Ibolit

答えて

1

あなたはactiveliがクリックされるかをフィルタリングすることもできますが、:

$('.next').click(function() {activeli.filter(":visible").trigger("click");} 

はあなたがすでにそれを持っているので、jQueryを使ってactiveliラップする必要がいけないことに注意し、基本でありますあなたが最初に李を見つけるとき。

+0

これは部分的に問題を解決しますが、[スライドショーが多い](http://jsbin.com/etajuv/8/edit)のように、 '.next'ボタンは最も近い' ul.show'に関連付けられていません。 '$ this.children( '。next')'は動作しません。どうやってやるの ? – rooofl

+0

私はこれを次のようにしました:http://jsbin.com/etajuv/9/editあなたは次とスライダをtogheterの両方に接続するものを見つける必要があるので、ラッパーを追加して、スクリプトを書き直して代わりにラッパーとそのコンテンツ。 – voigtan

+0

もちろん、ありがとうございます。 – rooofl