如何从数组中使用每个?

时间:2012-01-25 10:31:45

标签: javascript jquery html datatable datatables

我用这个:http://datatables.net/release-datatables/examples/api/select_row.html

这是函数返回选择的行:

function fnGetSelected( oTableLocal )
{
    var aReturn = new Array();
    var aTrs = oTableLocal.fnGetNodes();

    for ( var i=0 ; i<aTrs.length ; i++ )
    {
        if ( $(aTrs[i]).hasClass('row_selected') )
        {
            aReturn.push( aTrs[i] );
        }
    }
    return aReturn;
}

我做:

var arr = fnGetSelected(oTable);

这回报我:

[tr.gradeA, tr.gradeA, tr.gradeA]

这是:

<tr class="gradeA even row_selected">
<td class=" sorting_1"><span class="my_values" test="aaa">Gecko</span></td>
<td>Camino 1.5</td>
<td>OSX.3+</td>
<td class="center">1.8</td>
<td class="center">A</td>
</tr>
<tr class="gradeA odd row_selected">
<td class=" sorting_1"><span class="my_values" test="bbb">Gecko</span></td>
<td>Netscape 7.2</td>
<td>Win 95+ / Mac OS 8.6-9.2</td>
<td class="center">1.7</td>
<td class="center">A</td>
</tr>
<tr class="gradeA even">
<td class=" sorting_1"><span class="my_values" test="bbb">Gecko</span></td>
<td>Netscape Browser 8</td>
<td>Win 98SE+</td>
<td class="center">1.7</td>
<td class="center">A</td>
</tr>

我为此自己的span.my_values添加了属性 test 。 现在我想为此获得所有属性测试

我试试:

    arr.each(function(index) {
        console.log($(this).children());
    });

但是这个返回错误: arr.each不是函数

我该怎么做?

5 个答案:

答案 0 :(得分:3)

jQuery的通用数组循环函数是$.each,而不是Array.prototype的成员,所以:

$.each(arr, function() {
    console.log($(this).children());
});
  

现在我想为此进行所有属性测试。

如果您想在test中的元素中获取span的{​​{1}}类,其中包含“my_values”类,则可以使用arr

$.map

...它为您提供了var testValues = $.map(arr, function() { return $(this).find('span.my_values[test]').attr('test'); }); 值的数组。


附注1:由于您使用的是jQuery(本质上是基于集合的),而不是让test函数返回fnGetSelected个匹配元素,所以如何让它返回{ {1}}对象?

Array

创建一个包含所有返回节点的jQuery对象,然后将其过滤为只有“row_selected”类(如原作所做的那样)并返回它。

然后你可以像这样使用它:

jQuery

附注2:“test”是function fnGetSelected( oTableLocal ) { return $(oTableLocal.fnGetNodes()).filter('.row_selected'); } 元素的无效属性,尽管浏览器允许它。请改用data-* attributes,例如“数据测试”,而不是“测试”。

答案 1 :(得分:2)

你有没有尝试过:

 $.each(arr, function(index) {
    console.log($(this).children());
});

或:

 $(arr).each(function(index) {
    console.log($(this).children());
});

答案 2 :(得分:1)

each()方法仅适用于jQuery对象,而不适用于数组。但是,$.each()支持数组,因此您可以使用它:

$.each(arr, function() {
    console.log($(this).children());
});

答案 3 :(得分:1)

arr是一个数组。你必须这样做

$.each(arr,function(index,value) {
  console.log(value);
})

您可以将arr转换为jQuery对象,并通过更改函数来使用arr.each():

function fnGetSelected( oTableLocal )
{
    var aReturn = $([]);
    var aTrs = oTableLocal.fnGetNodes();

    for ( var i=0 ; i<aTrs.length ; i++ )
    {
        if ( $(aTrs[i]).hasClass('row_selected') )
        {
            aReturn.pushStack( aTrs[i] );
        }
    }
    return aReturn;
}

答案 4 :(得分:1)

您可以将arr用作:

    $(arr).each(function(index) {
        console.log($(this).children());
    });