0

私はこのJqueryコードを持っています:

 $('.item_bar_action_holder_drop a').click(function() {
            var item_bar = $('.item_bar_action_holder_actions');
            if(item_bar.is(':visible')) {
                $(this).removeClass('active');
            } else {
                $(this).addClass('active');
            }
            item_bar.slideToggle('fast', function() {
            });
        });

ここでの問題は、「アクティブな」クラスが閉じたパネルに設定するボタンを何度もクリックすると、それが間違っていることです。なぜそれが起こったのか理解できません。

4

2 に答える 2

1

item_barその時点で がアニメーション化されているかどうかを確認し、アニメーション化されている場合はこれ以上アクションをキューに入れません:

$('.item_bar_action_holder_drop a').click(function() {
    var item_bar = $('.item_bar_action_holder_actions');
    if (item_bar.is(':animated')) {
        return;
    }
    ...
});
于 2012-07-23T10:21:01.450 に答える
0

基本的なslideToggle()の例。

アクティブなクラスのcssは=display:block;だと思います。item_barのデフォルトのcssはdisplay:noneです。私が正しければ; この方法も使用できます。

$(document).ready(function() {
   $('.item_bar_action_holder_drop a').click(function() {
      var item_bar = $('.item_bar_action_holder_actions');

      item_bar.removeClass('active');//removes class from all
      $(this).addClass('active');//adds class clicked one

      if( item_bar.is(':visible')) {//edited here !
        item_bar.slideToggle('fast',function() {
           $(this).removeClass('active');//removes class when animate complete
        });
      }
  });
  //if you want to show first panel when your document is ready
  $('.item_bar_action_holder_actions:first').show().addClass('active');
});

注:あなたはあなたのhtmlを表示しなかったので、私はあなたのhtmlを推測しようとしています。

于 2012-07-23T10:28:34.410 に答える