2017-05-11 1 views
0

Ich habe ein bisschen Probleme mit der Erstellung eines Kategorie-Filters für meine benutzerdefinierte Post-Typ Taxonomie, ich habe versucht, verschiedene Dinge in jQuery und ich denke, dies sollte die sein Der beste Weg, um zu bekommen, was ich will.jQuery .detach/append in if/else Anweisung

Code:

var divs; 

$('.category').on('click', function() { 
    if(divs == 1) { 
     alert('ayylmao?'); 
     $('section#showcase').append(detached); 
     divs = 0; 
    } else { 
     divs = 1; 
     var lolxd = $(this).find('a').attr('id'); 
     alert(lolxd); 
     var detached = $('section#showcase').contents().not("." + lolxd).detach(); 
    } 
}); 

Es ist eine Weile her ist her, dass ich jQuery verwendet, aber aus irgendeinem Grund die var ‚abgelöst‘ wird nicht auf den Abschnitt Vitrine anhängen.

Würde gerne hören, was ich falsch mache; _;

+2

Ich denke, da Ihre Variable 'detached' nur lokal für die Funktion ist, sobald Ihr' divs' Wert 1 ist, 'detached' nicht definiert ist, versuchen Sie eine' console.log' davon in Ihrem 'if' – Lixus

+1

' var divs, losgelöst; ',' losgelöst = $ ('section # showcase'). contents(). nicht ("." + lolxd) .detach() ' – guest271314

+0

ok ja, es heißt undefiniert. Irgendeine Idee, was ich ändern sollte? – kid

Antwort

1

detached wird innerhalb Ihre Click-Handler-Funktion erklärt. Das bedeutet, dass es jedes Mal neu erstellt wird, wenn die Funktion ausgeführt wird.

Vergleichen Sie das zu Ihrer Verwendung von divs, die außerhalb der Funktion deklariert ist und somit über Funktionsaufrufe hinweg besteht.

Es gibt viele Möglichkeiten, dies zu lösen, aber die einfachste dem gleichen Muster folgen würde, die Sie für divs haben und Code haben, der wie folgt aussieht:

var divs; 
var detached; 
$('.category').on('click', function() { 
    if(divs == 1) { 
     alert('ayylmao?'); 
     $('section#showcase').append(detached); 
     divs = 0; 
    } else { 
     divs = 1; 
     var lolxd = $(this).find('a').attr('id'); 
     alert(lolxd); 
     detached = $('section#showcase').contents().not("." + lolxd).detach(); 
    } 
}); 

allgemeiner gesagt, es klingt wie wenn Sie trennen eine Vitrine, Sie möchten sie behalten, damit Sie sie später wieder hinzufügen können. Abhängig von der Zusammensetzung Ihres Programms ist es möglicherweise sinnvoller, nur die display dieses Elements in none zu ändern. Dies ändert jedoch die Semantik, wenn Sie mehrere Dinge haben, die Sie an Ihre Präsentation anhängen könnten.

+0

Ye das Problem damit ist, dass ich nth-Kind für jeden 3., 4. und 5. Artikel verwende. Auch danke, dass du geholfen hast, es funktioniert jetzt fast (: – kid