2012-04-03 11 views
0

ich habe eine kleine frage, in bezug auf slide-up und slidedown, das problem ist in slide-up tatsächlich, sobald ich auf den link den inhalt rutschen, und das ist ok, aber wenn ich versuche, diese Folie zu schließen, es slidesup und slidedown automatisch, ich meine es kann nicht geschlossen werden, wenn es ohnehin geöffnet :), alles hoffen klar sein, nachdem ich zeigen u den Code:slideup slididedown issues

$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; 
    }); 

und 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> 

Alles, was ich will, ist, dass es geschlossen werden kann.

und ich danke Ihnen allen für die Hilfe und spart einige Zeit, ich schätze es wirklich!

+0

Hiya so alles, was Sie wollen, ist ein nach oben gleiten d nach unten, wenn der Ankerkurs angeklickt wird? überprüfe nur, bevor ich meine Antwort poste! Ich könnte ein Problem für Ihre Frage als Demo haben, Cheerios! –

+0

@tats_init Ja, aber wenn ich auf einen anderen Link klicke, wird der vorherige geschlossen, Slide-Up ich meine. aber wenn ich den geöffneten Link klicke, sollte es schließen –

+1

Saweet gimme 2 Minuten Ich habe eine Lösung für Sie! Prost –

Antwort

2

Sie haben eine slidedown nach dem slideup

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

wenn die Wähler beide für gleich sind, wird es nach oben und unten.

Sie können versuchen, die slidedown für die angeklickt zu überspringen, wenn es geöffnet war, als

geklickt

EDIT

Javascript-Code geändert

<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

danke :) aber wie überspringe ich es? if)) –

+0

(! $ (this) .ist ('selected')) {// nach unten rutschen hier } Beachten Sie, dass Sie bewegen müssen das Hinzufügen und Entfernen der ausgewählten Klasse zu EDIT hatte einen Fehler in der Selektor –

+0

nope :(Hat nicht geholfen –

2

Hiya leicht Hier werden Sie Demo gehen : http://jsfiddle.net/uetGd/29/

Das andere Problem behoben, das Sie verbessern können mehr: 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-Code

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


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

ODER bearbeiten

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

nein)) der Inhalt schaltet zurück, wenn ich es schließen will)) –

+0

Dies hat das gleiche Slideup/Slidedown-Problem, wenn einige Elemente hinzugefügt werden –

+1

Gib mir 1 Minute Minute meine Antwort aktualisieren LOLz! :) –