是否有可能转换此jquery链返回一个字符串而不需要单独的迭代?

时间:2010-12-21 15:38:51

标签: jquery

我有一个HTML代码段,如下所示

<tr class="new">
<td>
   <input name="id" type="checkbox"/>
   <span>9</span>
</td>
<td> // Other Stuff... </td>
</tr>
// other table rows
<tr class="new">
<td>
   <input name="id" type="checkbox"/>
   <span>12</span>
</td>
<td> // Other Stuff... </td>
</tr>

目前,.find('.new').find('input[name="id"]:checked').next().text().trim();给了我一个像“912”的字符串。

无论如何我可以取回像[9,12]或[“9”,“12”这样的数组而不必显式遍历.find片段返回的输入列表?我愿意改变查询以避免迭代。

3 个答案:

答案 0 :(得分:4)

您正在寻找jQuery的map function

$(...).find('.new input[name="id"]:checked')
      .next()
      .map(function() { return parseInt($.trim($(this).text(), 10); })
      .get()

答案 1 :(得分:2)

您可以使用.map(),如下所示:

var arr = $('.new input[name="id"]:checked + span').map(function() {
            return $.trim((this).text());
          }).get();

如果您想要一组数字,只需添加+,如下所示:

var arr = $('.new input[name="id"]:checked + span').map(function() {
            return +$.trim((this).text());
          }).get();

答案 2 :(得分:0)

你可以这样做:

myArray = new Array();

.find('.new').find('input[name="id"]:checked').each(function(){
    myArray.push($(this).next().text().trim());
});

看起来.map()可能是更复杂的方法。