2015-04-01 61 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