我正在使用JQuery构建一个多级(固定为3级)菜单。一切都运转良好,但我想做的是让所有级别在其中任何一个被徘徊时消失。
我正在寻找类似的东西:
$('#categories AND #subcategories AND #tags').live('-NOT-mouseover', function(){
$('#categories, #subcategories, #tags').remove();
});
另外,我不知道如何在JQuery选择器上获取AND运算符。
答案 0 :(得分:5)
选择它,你可以这样做:
$(".commonClass:not(:hover)")
或(是的,他们都工作)
$('#categories:not(:hover), #subcategories:not(:hover), #tags:not(:hover)')
虽然这第二个真的很丑..
如果是你想要的“过度”:
$(yourselector).hover(handlerOut);
(意思是)
$(yourselector).hover(function(){ console.log("i've just existed whatever you had in your selector"); });
你想要的“和”,我认为它不受支持。你可能不得不做这样的事情
$("#categories, #subcategories, #tags").hover(function(){
if($('#categories:hover, #subcategories:hover, #tags:hover').length==0){
doStuff();
}
});
答案 1 :(得分:3)
live
。remove
从DOM中删除元素,只需隐藏它们。<强>代码:强>
$('.classForThoseelements').hover(function(){
$(this).toggle();
});
当然,您仍然可以使用id
s:
$('#categories, #subcategories, #tags')...
但它不是那么干净。
答案 2 :(得分:1)
既然我认为我理解了这个问题,那么这就是答案:
var leaveTimer;
$('#categories, #subcategories, #tags').hover(function() {
if (leaveTimer) clearTimeout(leaveTimer);
}, function() {
var $this = $(this);
leaveTimer = setTimeout(function() {
$this.remove();
}, 500);
});
这是我的小提琴:http://jsfiddle.net/LFdsV/
虽然我不知道你为什么不使用.show()
和.hide()
而不是添加和删除元素。
另请注意,只有嵌套菜单元素时才能使用上述内容。