2013-05-15 3 views
6

다양한 이유 때문에 지정된 높이가 & 인 아코디언을 생성했습니다 : 숨김 및 숨김을 클릭하면 전체적으로 열립니다. 그러나 필요한 버튼을 클릭하면 축소 할 수 없습니다.jquery alt 아코디언이 닫히지 않았습니다.

$(document).ready(
    function(){ 
     $('li.ww_slides').addClass('livequery').append('<span class="nav"></span>'); 
     $("li.ww_slides").click(function() { 
      $('li.ww_slides').removeClass('active'); 
      $(this).addClass('active'); 
      $('span.nav').addClass('open').css('bottom','0'); 
     }); 

     $("span.open").click(function() { 
      $(this).parent().removeClass('active'); 
     }); 
    } 
); 

이 관련 CSS입니다 : 내가 관련 span.nav.open의 클릭에 닫습니다 li.ww_slides을받을 수 있나요 어떻게

.ww_main_preview ul li.active { margin-bottom: 10px; padding-bottom: 10px; height: auto!important; } 
.ww_main_preview ul li.active span.nav { background-position: top center; } 
.ww_main_preview ul li.livequery { overflow: hidden; height: 76px; margin-bottom: 10px; padding-bottom: 10px; } 

이 관련 JS입니다 ?

답변

4

당신이 클릭 핸들러의 클래스를 변경하는 것처럼, 당신은 이벤트 위임해야

$("li.ww_slides").on("click", "span.open", function() { 
    $(this).parent().removeClass('active'); 
}); 

또는 : 우아한 응답

$(document).ready(function(){ 
    $('li.ww_slides') 
      .addClass('livequery') 
      .append('<span class="nav"></span>') 
      .click(function() { 
       $('li.ww_slides').removeClass('active'); 
       $('span.nav').removeClass('open'); 
       $(this).addClass('active') 
        .find('.nav') 
        .addClass('open') 
        .css('bottom','0'); 
      }).on('click', 'span.open', function(event) { 
       event.stopPropagation(); 
       $(this).parent().toggleClass('active'); 
      }); 
}); 
+0

감사합니다. 나는 그것이 작동하도록 할 수없는 것 같습니다. 내가 놓친 게 있니? 처음 클릭이 전체 li에 있기 때문에 그것이 범위 내에서 클릭을 포착하지 않을 수 있습니까? – cdb

+0

@cdb http://jsfiddle.net에서 데모를 제공 할 수 있습니까? – undefined

+0

여기 있어요 : http://jsfiddle.net/Rtstc/ 감사합니다. – cdb

관련 문제