2012-04-03 3 views
0

У меня есть небольшой вопрос, касающийся слайдов и слайдов, проблема в слайд-шоу на самом деле, когда я нажимаю ссылку, содержимое сползает вниз, и это нормально, но когда я пытаюсь закрыть этот слайд, это slidesup и slidedown автоматически, я имею в виду, что не может быть закрыт, когда он будет открыт :) в любом случае, надеюсь, что все будет ясно после того, как я показать U код:Проблемы со слайд-вспуском

$items = $('#accordion a.item'); 
    $items.click(function() { 
     $items.removeClass('selected'); 
     $(this).addClass('selected'); 
     $('#accordion li').children('ul').slideUp('slow'); 
     $(this).siblings('ul').slideDown('slow'); 
     return false; 
    }); 

и HTML:

<ul id="accordion"> 
    <li> 
     <a href="#" class="item">BANKS</a> 
     <ul>BLA BLA BLA</ul> 
    </li> 
    <li> 
     <a href="#" class="item">PETROL</a> 
     <ul>BLA BLA BLA</ul> 
    </li> 
</ul> 

все, что я хочу, это сделать его способным быть закрытым.

и спасибо всем, что помогли мне и пощадили какое-то время, я действительно ценю это!

+0

Хийя так все, что вы хотите, чтобы скользить вверх по d вниз при нажатии на ваш якорный заголовок? просто проверяю, прежде чем я отправлю свой ответ! У меня может быть jsfiddle для вашего вопроса как демо, cheerios! –

+0

@tats_init да, но если я нажму другую ссылку, предыдущая закроет, то я получу слайд. но если я нажму открытую ссылку, она должна закрыть –

+1

Saweet gimme 2 мин. У меня есть решение для вас! ура –

ответ

2

У вас есть slidedown после slideup

$('#accordion li').children('ul').slideUp('slow'); 
    $(this).siblings('ul').slideDown('slow'); 

когда Селекторы оба равны, он будет скользить вверх и вниз.

Вы можете попробовать пропустить slidedown для щелкнули элемента, если он был открыт при нажатии

EDIT

Javascript код, который будет немного изменен

<script type="text/javascript" charset="utf-8"> 
    $(document).ready(function() { 
     $items = $('#accordion a.item'); 
     $('#accordion li').children('ul').slideUp('slow'); 
     $items.click(function() { 
      $('#accordion li').children('ul').slideUp('slow'); 
      if ($(this)[0] != $('.selected')[0]) { 
       $(this).siblings('ul').slideDown('slow'); 
       $items.removeClass('selected'); 
       $(this).addClass('selected'); 
      } else { 
       $items.removeClass('selected'); 
      } 
      return false; 
     });  
    }); 
</script> 
+0

спасибо :) но как мне это пропустить?)) –

+0

если (! $ (Это) .а («выбран»)) {// скатываются здесь } Обратите внимание, что вы должны двигаться вокруг добавления и удаления выбранного класса слишком EDIT была ошибка в селектор –

+0

nope :(не помог –

2

Хийя Здесь вы идете демо : http://jsfiddle.net/uetGd/29/

Исправлена ​​ошибка, которую вы можете улучшить: http://jsfiddle.net/uetGd/39/

HTML

<ul id="accordion"> 
    <li> 
     <a href="#" class="item">BANKS</a> 
     <ul>BLA BLA BLA</ul> 
    </li> 
    <li> 
     <a href="#" class="item">PETROL</a> 
     <ul>BLA BLA BLA</ul> 
    </li> 
</ul>​ 

JQuery код

$('.item') 
    .ready(accordionSlideUpDown) // on ready 
    .click(accordionSlideUpDown); // on click 


function accordionSlideUpDown(){ 
    $('#accordion').children().children('ul').slideUp(); 
    $(this).next().slideToggle(); 
} 
​ 

ИЛИ Редактировать

$('#accordion').children().children('ul').slideToggle(); 
var previous = ""; 

$('.item') 
    .ready(accordionSlideUpDown) // on ready 
    .click(accordionSlideUpDown); // on click 


function accordionSlideUpDown(){ 
    var newval = $(this).text(); 

    $('#accordion').children().children('ul').slideUp(); 

    if (newval != previous){ 
     $(this).next().slideToggle('slow'); 
    } 
     previous = $(this).text();      
} 

​ 
+0

nope)) содержимое переключается обратно, когда я хочу его закрыть)) –

+0

это имеет ту же проблему со слайдами/слайдами, если некоторые предметы добавлены –

+1

gimme еще 1 минуту, обновляя мой ответ LOLz! :) –