2013-05-15 25 views
6

Z różnych powodów stworzyłem akordeon, który ma określoną wysokość & przepełnienie: ukryte i otwiera się na kliknięcie. Nie mogę jednak zawalić go, gdy kliknę wymagany przycisk.jquery alt akordeon nie zamykający

Jest to istotne 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'); 
     }); 
    } 
); 

Jest to istotne 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; } 

Jak mogę uzyskać li.ww_slides zamknąć na kliknięcie odpowiedniego span.nav.open ?

Odpowiedz

4

Jak zmieniają się zajęcia z obsługi kliknięcia, należy przekazać zdarzenie:

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

czyli

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

Dzięki za eleganckim odpowiedzi. Nie mogę tego jednak zmusić do działania. Czy czegoś brakuje? Czy to możliwe, ponieważ początkowe kliknięcie dotyczy całego li, więc nie podnosi ono kliknięcia w zakresie? – cdb

+0

@cdb Nie ma za co, o ile wiem, że powinien zadziałać, czy możesz dostarczyć demo na http://jsfiddle.net? – undefined

+0

Tutaj: http://jsfiddle.net/Rtstc/ Dzięki – cdb