2 Stimmen

jQuery toggle() Problem

  $('.toggle').toggle(function(){
    var ul = $('ul');
    ul.fadeOut('fast', function(){
      ul.fadeIn('fast').removeClass('off');
      ul.addClass('on');
    });
  }, function(){
    ul.fadeOut('fast', function(){
      alert('wtf'); // <- never gets here...
      ul.fadeIn('fast').removeClass('on');
      ul.addClass('off');
    });
  });

Was mache ich falsch?

Jeder Code, den ich innerhalb der zweiten FadeOut-Callback-Funktion hinzufüge, wird nie ausgeführt...

3voto

Plynx Punkte 11221

Setzen Sie var ul = $('ul'); auch in Ihrer zweiten Funktion.

2voto

alex Punkte 457905

ul ist im zweiten Callback nicht definiert. Ändern Sie den Geltungsbereich so, dass er für beide Rückrufe sichtbar ist.

var ul = $('ul');

$('.toggle').toggle(function(){
  ul.fadeOut('fast', function(){
    ul.fadeIn('fast').removeClass('off');
    ul.addClass('on');
  });
}, function(){
  ul.fadeOut('fast', function(){
    ul.fadeIn('fast').removeClass('on');
    ul.addClass('off');
  });
});

Wenn Sie nicht wollen ul außerhalb des Geltungsbereichs liegen soll, verpacken Sie sie entweder in eine selbst aufrufende Funktion oder geben Sie die ul innerhalb jedes Rückrufs von toggle() .

2voto

Hamish Punkte 22042

Die Variable ul existiert nicht im Bereich der zweiten Funktion. In Ihrem Fall ist das eine unnötige Optimierung, denn das Folgende sollte auch funktionieren:

  $('.toggle').toggle(function(){
    $('ul').fadeOut('fast', function(){
      $(this).fadeIn('fast').removeClass('off').addClass('on');
    });
  }, function(){
    $('ul').fadeOut('fast', function(){
      $(this).fadeIn('fast').removeClass('on').addClass('off');
    });
  });

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X