使用Jquery获取多个元素的价值

时间:2012-01-29 22:31:42

标签: jquery arrays

我试图获取表格单元格的值。

例如

<table id='projects'>

        <tr>
        <td id='a'>aaaaa</td>
        <td id='b'>bbbbb</td>
        <td id='c'>ccccc</td>
        <td id='d'>eeeee</td>
        <td id='e'>ddddd</td>
        </tr>
</table>
<a id='test' href='#'>test </a>

我想得到aaaaa,bbbbb,ccccc,eeeee,ddddd并将它们指向我的数组

我相信我可以使用下面的Jquery代码获取值

$(document).ready(function(){
    $('#test').click(function(){
    var tableVal=new Array();
    tableVal['a']=$('#a').text();
    tableVal['b']=$('#b').text();
    tableVal['c']=$('#c').text();
    tableVal['d']=$('#d').text();
    tableVal['e']=$('#e').text();   

    })
 });

然而,我觉得它不是很易于维护,如果我有20个标签就会占用大量代码。我想知道我是否可以使用.each或更好的方式来存档它。谢谢您的帮助。

5 个答案:

答案 0 :(得分:32)

如果您确实需要数组,请将.map().toArray()一起使用。

var tableVal = $('#projects td').map(function(i,v) {
    return $(this).text();
}).toArray();

否则,如果你真的要使用非数字索引,你需要一个Object,使用其他答案中的技巧。

答案 1 :(得分:11)

您可以执行以下操作,

var tableVal= [];

$('#projects tr:eq(0) td').each (function () {
   tableVal[this.id] = $(this).text();
});

注意::eq(0) - 表示第1行。如果您想对所有行执行相应修改,或者如果您需要帮助,请告诉我。

答案 2 :(得分:7)

是的,你可以:)。

var tableVals= {}
$('#projects td').each(function() {
    tableVals[$(this).attr('id')] = $(this).text();
});

如果您的密钥不是数字,请记住使用object而不是数组。

答案 3 :(得分:5)

首先,给tr id

<tr id="rowToGetDataFrom">

然后你就可以得到你想要的数组:

var tableVal = $('#rowToGetDataFrom td').map(function () { return $(this).text(); });

演示:http://jsfiddle.net/alecgorge/3ApnB/

答案 4 :(得分:2)

尝试:

var tableVal = [];
$('#test').click(
    function(){
        $('#projects td').each(
             function(){
                  tableVal.push($(this).text());
             });
    });