0

这行得通。但是,再次单击“#pages-btn”不会关闭“#instruct-pages”div。有没有更好的方法来写这个?谢谢您的帮助。

这是一个演示我的问题的小提琴:http: //jsfiddle.net/PCzfs/1/

$("#pages-btn").click(function () {
    $("#instruct-pages").fadeToggle();
    $(this).addClass("options-active");
});
$(document).mouseup(function (e) {
    var container = $("#instruct-pages");
    if (!container.is(e.target)
        && container.has(e.target).length === 0)
    {
        container.fadeOut();
        $("#pages-btn").removeClass("options-active");
    }
});
4

3 回答 3

0
var $instructPages = $("#instruct-pages");
$instructPages.is(":visible") ? $instructPages.fadeOut() : $instructPages.fadeIn();

演示


更新

您将如何切换“点击”的 .options-active 类?它在您单击容器外部时起作用,但如果您单击实际按钮则不起作用。

var $instructPages = $("#instruct-pages");
if ($instructPages.is(":visible"))
{
    $instructPages.fadeOut();
    $(this).removeClass("options-active");
}
else
{
    $instructPages.fadeIn();
    $(this).addClass("options-active");
}

演示

于 2013-09-30T14:45:09.873 回答
0

http://jsfiddle.net/PCzfs/2/

$("#pages-btn").click(function (e) {
     var container = $("#instruct-pages");
    container.fadeToggle();        

    if (!container.is(e.target) && container.has(e.target).length === 0){
        if($(this).hasClass('options-active')){
            $("#pages-btn").removeClass("options-active");    
        }else{
            $("#pages-btn").addClass("options-active");
        }   

    }

});
于 2013-09-30T14:46:05.907 回答
0

你可以把它添加到你的 mouseup 函数中:

e.target.id!=="pages-btn"
于 2013-09-30T14:49:24.870 回答