2011-09-05 15 views
0

IDが異なる2つの画像があります。#pic1と#pic2と言うことができます。私は両方のセレクタをトグルに追加しようとしましたが、両方とも同じ要素を個別に切り替えるため、最初のピクチャをクリックしてから2番目のものをクリックすると、2番目のトグルはターゲットdivを切り替えません。 。たとえば、100pxを左にスライドさせてから100pxを右にスライドすると#pic1をクリックすると100pxが左にスライドしますが、#pic2をクリックすると100pxだけ左にスライドします。誰かが私にどのような方向を見なければならないかというアイデアを教えてもらえますか?複数のセレクタでJqueryを切り替える

$('#pic1,#pic2').toggle(
function() 
{ 
    $('#mylayer').delay(1000).animate({left: "+=100"}); 
    $('#overlay').animate({opacity: 0.8}); 
}, 
function() 
{ 
    $('#mylayer').animate({left: "-=100"}); 
    $('#overlay').delay(1000).animate({opacity: 0}); 
}); 
+0

これは、トグルイン機能とトグルアウト機能が常に各トグル要素に別々に割り当てられているためです。 Toggle()はあなたのuseCaseには適切ではないようです。 – HBublitz

+0

両方にクラスを追加し、代わりにそれをセレクタとして使用しますか? – benhowdle89

答えて

0

両方のクリックに対して一度オープン/クローズ状態を追跡し、グローバル変数を使用しないようにし、複数の場所を使用するには、これはより拡張可能にするためにjQueryのデータ機能を使用していますこのような何か試してみてください:

$('#pic1,#pic2').click() { 
    var mylayer = $("#mylayer"); 
    var open = mylayer.data("open"); 
    if (open) { 
     mylayer.animate({left: "-=100"}); 
     $('#overlay').delay(1000).animate({opacity: 0}); 
     mylayer.data("open", false); 
    } else { 
     mylayer.delay(1000).animate({left: "+=100"}); 
     $('#overlay').animate({opacity: 0.8}); 
     mylayer.data("open", true); 
    } 
} 
+0

ありがとうございました!私はいくつかの調整を加えなければなりませんでしたが、これは私が必要としていたものです。私はこの前に、バインド解除ハンドラをバインドすることでこれをやったことがありましたが、それはclunkyであり、これは優れて軽量です! – ska77

関連する問題