更清洁的代码jQuery多选择器

时间:2015-01-15 09:52:56

标签: jquery code-cleanup

我正在使用:

$("ul.menu").closest(".wrap").mouseenter(function () {
    $("#nav-blackout").css("display", "block");
})
    $("ul.menu").closest(".wrap").mouseleave(function () {
    $("#nav-blackout").css("display", "none");
});

然而,当鼠标进入ul.menu li但是如果我将其添加为多重选择器时,我希望发生同样的事情:

 $("ul.menu, ul.menu li").closest(".wrap").mouseenter(function () {
        $("#nav-blackout").css("display", "block");
    })
那么它当然还在寻找最接近的.wrap,这不是我想做的 - 所以我需要把它写出两次(一次用于最接近的包装,一次用于ul.menu li)或者是这样做的一种更简洁的方式?

1 个答案:

答案 0 :(得分:0)

尝试$("ul.menu").closest(".wrap").add('ul.menu li');

$('ul.menu li').closest('.wrap').addBack()也可能有用。

您也可以使用.hide()代替.css("display", "none").show()作为相反的内容,而.toggle()则会将两者交替使用。

.hover()将允许您同时指定mouseenter和mouseleave处理程序。

$('ul.menu li').closest('.wrap').addBack().hover(
    function () {  //mouseenter handler
        $("#nav-blackout").show()
    }, function () { //mouseleave handler
        $("#nav-blackout").hide()
    }
);