2013-08-04 97 views
0

我遇到了一個小問題。我正在使用一系列按鈕,當按下時關閉先前可見的按鈕,然後打開與該按鈕鏈接的按鈕。使用slidetoggle雙擊按鈕()

除非在雙擊某個按鈕時打開另一個按鈕,否則該部分效果很好。它會關閉與點擊按鈕的鏈接。如果你點擊另一個按鈕,它會打開鏈接到該按鈕加上你雙擊的前一個按鈕。

只有當您雙擊一個尚未激活的按鈕時才能創建此錯誤。

$(document).on('click', 'button', onButtonClick) 

function onButtonClick() { 
    target = $(this).attr('class') 
    if ($('.active')[0]) { 
     if(!$('.active').hasClass(target)) { 
      $('.active').removeClass('active').slideToggle(function() { 
       $('div.' + target).slideToggle().addClass('active') 
      }) 
     } 
    } else { 
     $('div.' + target).slideToggle().addClass('active') 
    } 
} 

這裏是我的小提琴:http://jsfiddle.net/78TRb/

我的問題是有沒有辦法只允許在按鈕上點擊單以消除我的錯誤,或是否有更好的辦法?

非常感謝您的幫助。

回答

0
$(document).on('click', 'button', onButtonClick) 
var clicked = false; 
function onButtonClick() { 
    if(clicked) 
    { 
     return; 
    } 

    target = $(this).attr('class') 
    if ($('.active')[0]) { 
     if(!$('.active').hasClass(target)) { 
      clicked = true; 
      $('.active').removeClass('active').slideToggle(function() { 
       $('div.' + target).slideToggle().addClass('active') 
       clicked = false; 
      }) 
     } 

    } else { 
     $('div.' + target).slideToggle().addClass('active') 
     clicked = false; 
    } 
} 

這裏是小提琴http://jsfiddle.net/78TRb/13/

0

試試這個。

$(document).on('click', 'button', onButtonClick) 

function onButtonClick() { 
    target = $(this).attr('class') 
    if ($('.active')[0]) { 
     if(!$('.active').hasClass(target)) { 
      $('.active').removeClass('active').slideToggle(function() { 
       $('div.' + target).slideToggle().addClass('active') 
      }) 
     } 
    } else { 
     $('div.' + target).slideToggle().addClass('active') 
    } 
} 

這裏是小提琴http://jsfiddle.net/78TRb/11/