-1

この小さなコードを修正する必要があります:

jQuery(document).ready(function() {

    $('.plus').click(function(){
        $('#top:hidden').show('slow');
        $('.plus').click(function(){
            $('#top:visible').hide('slow');

        });
    });
});
4

3 に答える 3

3

代わりにこれを試してください:

jQuery(document).ready(function() {
    $('.plus').click(function(){
        $('#top').toggle('slow');
    });
});

'.plus'つまり、要素がクリック'#top'されるたびに、要素は表示と非表示の間で切り替えられます。

質問に示されているコード'.plus'は、クリックされたときに'#top'表示され(現在表示されていない場合)、次に非表示にする2番目のクリックハンドラーを割り当てることを示しています'#top'。次のクリックで、これらのハンドラーの両方が実行され、3番目のハンドラーが作成されます。次のクリックで、3つのハンドラーすべてが実行されます。などなど。つまり、.click()ハンドラーを追加するために繰り返し呼び出されても、以前のハンドラーは置き換えられません。

于 2013-01-19T11:46:01.367 に答える
0

あなたはtoggle()交換するために使用するhide()ことができますshow()

$('.plus').click(function(){
   $('#top').toggle('slow');
})

APIリファレンス:http ://api.jquery.com/toggle/

于 2013-01-19T11:48:25.803 に答える
0

クリックを2回バインドする必要はなく、条件を設定して表示と非表示を切り替えることができます。

$('.plus').click(function(){
    if($('#top').is(':visible')
         $('#top').hide('slow');
   else
         $('#top').show('slow');        
});

toogleイベントも使用できます

$('.plus').toggle(function(){
      $('#top').show('slow');
},  
function(){
       $('#top').hide('slow');
});
于 2013-01-19T11:42:54.103 に答える