2010-11-25 3 views
0

У меня возникла проблема при нажатии функции щелчка внутри функции щелчка. Я также пробовал mousedown(), но та же проблема. Когда выполняется еще и нажмите кнопку. Функция click работает дважды.jquery click function conflict

 
$('.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

Вы должны сказать ему, чтобы остановить обработку барботирования события щелчка, используя stopImmediatePropagation (параметр события, который я добавил e).

$('.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 в функцию «щелчок» и проверить там, если кнопка выбрана в данный момент или нет. Таким образом, вам не нужно отменить/отменить функции.