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/

我的问题是有一种方法只允许单击按钮来消除我的错误还是有更好的方法?

非常感谢您的帮助。

4

2 回答 2

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/

于 2013-08-04T01:29:29.300 回答
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/

于 2013-08-04T02:02:18.627 回答