2012-06-30 6 views
0

JQuery를 사용하여 다중 레벨 (3 레벨로 고정) 메뉴를 작성합니다. 모든 것이 잘 작동하지만 내가하고 싶은 것은 모든 레벨이 사라질 때 모든 레벨을 사라지게 만드는 것입니다.JQuery를 가져 오지 않습니다.

나는 이런 식으로 뭔가를 찾고 있어요 :

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

을 또한, 나는 JQuery와 선택기에는 AND 연산자를 얻을하는 방법을 모르겠어요.

+3

쉼표 의미 AND –

+0

순수 CSS 구현일까요? 나는 그것이 더 견고 할 것이라고 믿습니다 ... –

+0

@ ŠimeVidas. 모든 주요 브라우저에서 지원되지 않습니다. – gdoron

답변

3
  1. live을 사용하지 마십시오.
  2. 해당 요소에 클래스를 지정하십시오.
  3. remove은 DOM에서 요소를 제거합니다. 단지 그것을 숨기 만하면됩니다.

코드 :

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

을하지만 그 깨끗한 아니다 :

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

물론 여전히 id의를 사용할 수 있습니다. 그것은이 두 번째 정말 추한이지만 그것이라면 ..

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

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

을하거나 (예 둘 다 작동)을 선택

+0

에서 스크립트 태그를 제거 할 수 있습니다. 감사합니다. 문서 준비가 완료되면 해당 요소를 DOM에로드하므로 라이브를 사용하고 있습니다. 2. 요소에 클래스를 지정합니다. 3. 조언 해 주셔서 감사합니다! :) 그리고 그 코드는 내 마우스가 그 중 하나를 떠나 자마자 모든 요소를 ​​숨 깁니다. 네가 모든 것을 떠났음을 알 수있는 방법이 필요해. – Multitut

+0

@Multitut. mousemove 이벤트에 등록하여 어떤 요소가 hover되었는지 확인할 수 있습니다. 그것은 "무거운"작업입니다. – gdoron

5

당신은 할 수있다 원하는대로 끝났습니다.

$(yourselector).hover(handlerOut); 

(즉, 의미)

$(yourselector).hover(function(){ console.log("i've just existed whatever you had in your selector"); }); 

원하는 "AND"는 지원되지 않는다고 생각합니다. 당신은 아마 지금은 내가 질문을 이해 생각이

$("#categories, #subcategories, #tags").hover(function(){ 
    if($('#categories:hover, #subcategories:hover, #tags:hover').length==0){ 
     doStuff(); 
    } 
}); 
+0

'hover'는'mouseout'이 아닙니다. 문서를 읽으십시오. :) – gdoron

+0

나는 알고있다. : P. 그러나 설명의 목적으로 사용되었다. – fmsf

1

뭔가를해야 할 것, 여기에 대답에 자상이다 : 나는 비록 http://jsfiddle.net/LFdsV/

: 여기

var leaveTimer; 
$('#categories, #subcategories, #tags').hover(function() { 
    if (leaveTimer) clearTimeout(leaveTimer); 
}, function() { 
    var $this = $(this); 
    leaveTimer = setTimeout(function() { 
     $this.remove(); 
    }, 500); 
}); 

나의 바이올린의 .show().hide() 대 요소를 추가 및 제거하지 않는 이유를 모르겠다.

위의 내용은 메뉴 요소가 중첩 된 경우에만 작동합니다.

+0

첫 번째 레벨을 떠나 자마자 메뉴를 닫을 것이다. – Multitut

+0

메뉴 요소가 중첩되어 있으면 문제가 될 것이라고 생각하지 않습니다. 테스트 할 jsFiddle을 만들고 있습니다. –

+0

이제 HTML 게시를 기다리고 있습니다. 이 문제는 여러 번 해결되었습니다. http://www.1stwebdesigner.com/css/38-jquery-and-css-drop-down-multi-level-menu-solutions/ –

관련 문제