2012-06-30 43 views
0

我正在使用JQuery構建多級(固定到3級)菜單。一切工作正常,但我想要做的是讓所有的關卡在任何關卡被關閉時消失。不懸停JQuery

我正在尋找這樣的事情:也

$('#categories AND #subcategories AND #tags').live('-NOT-mouseover', function(){ 
    $('#categories, #subcategories, #tags').remove(); 
}); 

,我不知道如何獲取和操作員的一個jQuery選擇。

+3

逗號的意思是AND –

+0

也許是純粹的CSS實現?我相信那會更加強大...... –

+0

@ŠimeVidas。不支持所有主流瀏覽器。 – gdoron

回答

3
  1. 請勿使用live
  2. 給這些要素類
  3. remove去除好!只是隱藏的DOM元素。

代碼:

$('.classForThoseelements').hover(function(){ 
    $(this).toggle(); 
}); 

當然,你仍然可以使用id S:

$('#categories, #subcategories, #tags')... 

但它並不乾淨。

+0

中刪除腳本標記1.謝謝,我正在使用,因爲我在文檔準備好後將這些元素加載到DOM。 2.給元素一個類。 3.感謝您的建議! :) 並且該代碼只要我的鼠標離開其中一個就隱藏了所有元素。我需要一種方法來知道你已經離開了所有人。 – Multitut

+0

@Multitut。您可以註冊到mousemove事件並查看懸停的元素。注意這是一個「沉重的」操作。 – gdoron

5

選擇它,你可以這樣做:

$(".commonClass:not(:hover)") 

或(是兩者的工作)

$('#categories:not(:hover), #subcategories:not(:hover), #tags:not(:hover)') 

雖然它實在是太醜了這第二個..

如果它是「over out」你想要的:

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

'hover'不是'mouseout'請閱讀文檔。 :) – gdoron

+0

我知道:P,但它是爲了說明目的 – fmsf

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()與添加和刪除元素。

另請注意,以上只適用於菜單元素嵌套。

+0

,只要你離開第一級關閉菜單。 – Multitut

+0

如果你的菜單元素是嵌套的,我不認爲這會是一個問題。我正在創建一個jsFiddle來測試。 –

+0

現在等你發佈你的HTML。請記住,這個問題已經解決了很多次:http://www.1stwebdesigner.com/css/38-jquery-and-css-drop-down-multi-level-menu-solutions/ –