2017-06-12 50 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

变种加入ActiveTag = $( '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

相关问题