2017-05-11 6 views
0

カスタム投稿型分類のカテゴリフィルタを作成するのに少し問題があります.jQueryでさまざまなことを試してみましたが、これは私が望むものを得るための最良の方法。jQuery .detach/ifend if/else文

コード:それはしばらく前に私はjQueryのを使用しますが、何らかの理由「デタッチ」VARのために文句を言わないのセクションのショーケースに追加することとなっている

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

私が間違っていることを聞きたいですか; _;

+2

あなたの変数 'detached'は関数のローカルなので、' divs'値が1であれば 'detached'は定義されていないので、' console.log'を 'if'の中で実行してみてください – Lixus

+1

' ( "。" + lolxd).detach() ' – guest271314

+0

これは未定義です。私は何を変えなければならないのか? – kid

答えて

1

detachedクリックハンドラ機能と宣言されています。つまり、関数が実行されるたびに再作成されます。

これは、divsを使用すると、関数の外で宣言され、関数呼び出しをまたいで存続します。

あり、これを解決するために多くの方法がありますが、最も簡単にはdivsためのあなたが持っている同じパターンに従うと、このようなコードを持っているだろう:

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

より一般的に言えば、それはときのように聞こえますあなたはショーケースを切り離し、後でそれを追加できるように、ショーケースを保持したいと思っています。プログラムの構成によっては、その項目のdisplaynoneに変更した方が便利です。ただし、ショーケースに追加できるものが複数ある場合は、セマンティクスが変更されます。

+0

それは、3番目、4番目、5番目のアイテムごとにnth-childを使用しているという問題があります。また、今すぐ正しく働いていることに感謝します(: – kid