2012-02-28 4 views
0

그래서 같은 일부 HTML 선택 메뉴를 대체하는 간단한 드롭 다운 메뉴를 구축했습니다 : 나는 두 개 이상의 메뉴를 가지고, 마지막 부분 인 경우jQuery에서 위의 대상 클래스를 대상으로 (this)?

$('html, .currentPage').click(function() { 
    $('.currentMenu').slideUp('fast'); 
}); 

$('.currentPage').click(function(e){   
    if(!$(this).next().is(":visible")) { 
     $(this).next().stop().slideDown('fast'); 
    } 
    e.stopPropagation(); 
}); 

$(".currentMenu li").click(function(e){ 
    e.preventDefault(); 
    $(".currentPage").html($(this).text()); 
}); 

그러나 :

$(".currentMenu li").click(function(e){ 
    e.preventDefault(); 
    $(".currentPage").html($(this).text()); 
}); 

것 두 메뉴 모두에서 발생합니다. 특정 메뉴에 대해서만 ".currentPage"클래스를 어떻게 타겟팅 할 수 있습니까?

HTML :

     <div class="menuWrap font"> 
          <div class="currentPage">Trebuchet MS</div> 
          <div class="currentMenu"> 
           <ul> 
           <li>Arial</li> 
           <li>Helvetica</li> 
           <li>Droid Sans</li> 
           <li>Trebuchet MS</li> 
           <li>Georgia</li> 
           <li>Droid Serif</li> 
           </ul> 
          </div> 
         </div> 


         <div class="menuWrap fontSize"> 
          <div class="currentPage">12pt</div> 
          <div class="currentMenu"> 
           <ul> 
           <li>9pt</li> 
           <li>10pt</li> 
           <li>11pt</li> 
           <li>12pt</li> 
           <li>13pt</li> 
           </ul> 
          </div> 
         </div> 
+0

을 : 당신의 HTML 구조를 감안할 때,이 작업을해야합니다. HTML을 게시 했으므로 답변을 업데이트했습니다. –

답변

2

두 가지 옵션이 있습니다. 첫 번째는 에서 가장 가까운 .currentPage 요소를 찾기 위해 DOM을 통과하는 것입니다.

$(".currentMenu li").click(function(e){ 
    e.preventDefault(); 
    $(this).closest(".currentMenu").prev().html($(this).text()); 
}); 

두 번째 옵션을 사용하면 요소에 적용되는 플러그인이 코드를 넣어, 그래서 당신은 항상에서 요소를 선택하는 컨텍스트를 알고

+0

@HackedByChinese가 가장 쉬운 해결책을 제시했지만 더 나은 해결책을 제시했습니다. 어떤 종류의 캡슐화는 jQuery 플러그인이나 클래스의 인스턴스화를 통해 실제로 수행되어야합니다. 그러나 이것은 현재 OP를 위해 조금 더 진보 해 가고 있습니다. – maxedison

+0

우수. 항상 나를 잡아낼 수있는 가장 단순한 것들. 감사! – tctc91

2

확인, 업데이트 된 질문에 따라. .currentMenu와 .currentPage는 형제입니다. 따라서 부모 요소로 이동 한 다음 현재 페이지로 드릴 다운 할 수 있습니다. 여기에 바이올린이 있습니다. http://jsfiddle.net/DuPuJ/

+0

흠, 그 변화에 반응하지 않는 것 같습니까? JS 피들에 게시 하시겠습니까? 감사합니다. – tctc91

+0

OK, 약간 바뀌 었습니다. 샘플 업데이트 된 답변입니다. – HackedByChinese

관련 문제