2013-05-15 84 views
6

由於各種原因,我創建了一個具有指定高度的手風琴& overflow:隱藏並點擊完整打開。但是,當我點擊所需的按鈕時,我不能使其崩潰。jquery alt手風琴沒有關閉

這是相關JS:

$(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:

.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; } 

我如何獲得li.ww_slides關閉對相關span.nav.open的點擊?

回答

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

感謝優雅的響應。我似乎無法讓它工作。我錯過了什麼嗎?難道是因爲最初的點擊是在整個裏面,所以它不是在點擊內部的跨度? – cdb

+0

@cdb不客氣,據我所知,應該可以工作,你可以在http://jsfiddle.net上提供演示嗎? – undefined

+0

Here you go:http://jsfiddle.net/Rtstc/謝謝 – cdb