返回筛选结果的数组

时间:2016-10-10 14:02:06

标签: jquery

我有以下HTML button

<button name="foo" class="one active">cat</button>
<button name="foo" class="one active">dog</button>
<button name="foo" class="one active">hamster</button>
<button name="foo" class="one">rhino</button>
<button name="foo" class="one">rat</button>

给出以下jQuery代码:

var res = $('button[name=foo]', '#my-form').filter(function () {
    return $(this).hasClass('active');
}).text();

res以字符"catdoghamster"结束时,我希望将结果放在["cat", "dog", "hamster"]等数组中。

如何根据类过滤上述按钮并返回数组中按钮的text

2 个答案:

答案 0 :(得分:2)

这是一个不使用.filter()的解决方案,但适用于您已经提供的方案

var res = [];
$("button[name=foo].active").each(function(){ res.push($(this).text()})

这适用于选择器足够好。

答案 1 :(得分:1)

你可能想要一个除了过滤器之外的地图,然后在地图内部而不是在地图之后返回文本

&#13;
&#13;
var res = $('button[name=foo]', '#my-form').filter(function() {
  return $(this).hasClass('active');
}).map(function() {
  return $(this).text();
}).get();

console.log(res);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form id="my-form">
  <button name="foo" class="one active">cat</button>
  <button name="foo" class="one active">dog</button>
  <button name="foo" class="one active">hamster</button>
  <button name="foo" class="one">rhino</button>
  <button name="foo" class="one">rat</button>
</form>
&#13;
&#13;
&#13;

作为旁注,过滤器似乎是不必要的,就像你可以做的那样

$('button[name=foo].active', '#my-form')