jQuery"或"运营商不工作mouseleave?

时间:2015-04-01 01:12:08

标签: javascript jquery

$('.submenu' || '#categorymenu_100000')似乎只适用于.submenu

$(document).ready(function () {
    $('li a').on("mouseenter", function () {
        if ($(this).attr('href') == "/Pages/Men") {
            $('#categorymenu_100000 .submenu').show();
        }
    });
    $('.submenu' || '#categorymenu_100000').on("mouseleave", function () {
        $('.submenu').hide();
    });

2 个答案:

答案 0 :(得分:1)

如果你想在两个对象上都有事件处理程序,那么你应该使用它:

$('.submenu, #categorymenu_100000').on(...)

逗号分隔CSS选择器字符串中的多个选择器。


您的OR运营商没有按您的想法行事。这样:

$('.submenu' || '#categorymenu_100000').on(...)

与此相同:

$('.submenu').on(...)

因为string || anotherstring始终会返回它遇到的第一个truthy值,这是表达式中的第一个字符串。换句话说:

'.submenu' || '#categorymenu_100000' === '.submenu'

答案 1 :(得分:1)

'.submenu' || '#categorymenu_100000'是一个导致'.submenu'的JavaScript表达式,因为'.submenu'是一个真值 - 它是一个字符串,它不是空的。 ||选择其操作数的第一个真值。

如果要选择与这些选择器匹配的元素,则需要使用CSS分隔符:,。 jQuery适用于CSS选择器而不是JavaScript表达式(它不是魔术)。

$('.submenu, #categorymenu_100000').on('mouseleave', …);