2017-06-12 4 views
0

私はクリッククラスでアクティブなクラスを切り替えるフィルタを持っています。クリックすると、クラスをアクティブにしているリンクをループし、それらのリンクのテキストから新しい配列を作成したいと思います。しかし、私はループしているときに私はコンソールに何かを得ることはありません。 これはコードです同じクラスのすべてのリンクからテキストを取得する

$('.filter-button').click(function() { 

    $(this).toggleClass('active'); 

    var activeTags = $('filter-button.active'); 

    $(activeTags).each(function() { 
    var tags[] = $(this.text()); 
    }); 

    console.log(tags); 
}); 

私は間違っていますか?

+0

VAR ActiveViewタグ= $( 'filter-button.active')。フィルターボタンがクラスの場合は、ドットがありません。 – tech2017

+0

あなたはあなたのセレクタのドットを忘れました: 'filter-button.active'。また、activeTagsは既にjqueryオブジェクトであるため、 '$(activeTags)'を実行する必要はありません。単に 'activeTags.each'を実行して、最後に、それぞれのタグvarをリセットします。あなたがそれを記録しようとすると存在しないでしょう – Pete

+0

[問題のタイトルにタグを入れないでください](https://stackoverflow.com/help/tagging) – Liam

答えて

1

each()関数のローカル変数である新しいtagsを各要素に対して作成しています。関数が終了すると、それは破棄されます。

あなたの外側console.log()は、存在しないものの値を一覧表示しようとしています(each()の機能の中にいないため)。

each()の外に、アレイを作成し、に追加:

$('.filter-button').click(function() { 
 

 
    $(this).toggleClass('active'); 
 

 
    var activeTags = $('.filter-button.active'); 
 
    var tags = []; 
 

 
    $(activeTags).each(function() { 
 
    tags.push($(this).text()); 
 
    }); 
 

 
    console.log(tags); 
 
});
.active { 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class=filter-button>1</button> 
 
<button class=filter-button>2</button> 
 
<button class=filter-button>3</button> 
 
<button class=filter-button>4</button> 
 
<button class=filter-button>5</button>

+0

ありがとうございました! – Leff

関連する問題