jQuery"或“;操作员没有处理mouseleave

jQuery "or" operator not working on mouseleave?

本文关键字:处理 mouseleave 操作员 quot jQuery      更新时间:2023-09-26

$('.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();
    });

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

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

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

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

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

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


您的OR操作员没有按照您的想法行事。此:

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

与此相同:

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

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

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