2010-11-25 17 views
0

クリック機能の中にクリック機能を置くときに問題があります。私もmousedown()を試しましたが、同じ問題です。 以外の場合が実行され、ボタンをクリックします。クリック機能は2回実行されています。jquery click function conflicts

 
$('.tableData').click(function(){ 
    if($('tr.trSelected').length > 1) { 
     $('.box-edit').addClass('btn-disabled'); 
     $('.box-info').addClass('btn-disabled'); 

     $('.nav-edit').unbind('click'); 
     $('.nav-info').unbind('click'); 

    } 
    else { 
     $('.box-edit').removeClass('btn-disabled'); 
     $('.box-info').removeClass('btn-disabled'); 

     $('.nav-edit').bind('click', function() { 
      $('.sub-nav-edit').slideToggle(200); 
      $('.box-edit').toggleClass('sub-nav-active'); 
     }); 
    } 
}); 

答えて

0

あなたは(私はeを追加したイベントパラメータ、の)stopImmediatePropagationを使用することにより、クリックイベントをバブリング取り扱いを停止し、それを伝える必要があります。

$('.tableData').click(function(e){ 

    if($('tr.trSelected').length > 1) { 
     $('.box-edit').addClass('btn-disabled'); 
     $('.box-info').addClass('btn-disabled'); 

     $('.nav-edit').unbind('click'); 
     $('.nav-info').unbind('click'); 

    } 
    else { 
     $('.box-edit').removeClass('btn-disabled'); 
     $('.box-info').removeClass('btn-disabled'); 
     e.stopImmediatePropagation(); 
     $('.nav-edit').bind('click', function() { 
      $('.sub-nav-edit').slideToggle(200); 
      $('.box-edit').toggleClass('sub-nav-active'); 
     }); 
    } 
}); 
0

if文を「クリック」機能に入れ、ボタンが現在選択されているかどうかをテストする必要があります。そうすれば、関数をバインド解除/再バインドする必要はありません。