2015-04-01 79 views
0

$('.submenu' || '#categorymenu_100000')似乎只在.submenu工作:jQuery“或”操作符不在mouseleave上工作?

$(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(); 
    }); 
+1

没有jQuery“or”运算符。 – Bergi 2015-04-01 21:03:35

回答

1

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

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

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

如果你想在这两个对象的事件处理程序,那么你应该这样做:

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

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


您的OR运算符没有按照您的想法进行。这:

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

是一样的:

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

因为string || anotherstring总是要回遇到这是你的表达的第一个字符串的第一个truthy值。换句话说:

'.submenu' || '#categorymenu_100000' === '.submenu' 
+1

@ user2225593 - 这是否回答你的问题? – jfriend00 2015-04-01 17:12:47