在jQuery中选择属性的值

时间:2014-02-25 16:35:37

标签: jquery html-table jquery-selectors

我有下表:

<table summary='' id='table_csrdownloadcenter'>
<thead>
<tr>
<th>text1</th>
<th>text2</th>      
<th>text3</th>
<th>text4</th>
<th>text5</th>
<th>text6</th>
<th>text7</th>
<th>text8</th>
</tr>
</thead>
<tbody> 

<tr id='nom_du_pdf'>
<td class='dc-date'></td>
<td class='dc-dl'></td>                                             
<td class='dc-title'></td>
<td class='dc-area'></td>
<td class='dc-category'></td>
<td class='dc-file'></td>
<td class='dc-ranking'></td>
<td class='dc-checkbox'><input type='checkbox' name='chk"+PathFile[i]+"' ></td>
</tr>

<tr id='nom_du_pdf2'>
<td class='dc-date'></td>
<td class='dc-dl'></td>                                             
<td class='dc-title'></td>
<td class='dc-area'></td>
<td class='dc-category'></td>
<td class='dc-file'></td>
<td class='dc-ranking'></td>
<td class='dc-checkbox'><input type='checkbox' name='chk"+PathFile[i]+"' ></td>
</tr>


</tbody>
<table>

对于每个 <tr>我想在字符串中保存第8个<td>中name属性的值 我试过这个:

function DownloadZip()
{
$('.DownloadZip').click(function(){

        var res = "";
    $('#table_csrdownloadcenter').find("tbody").find("tr").find(td:nth-child(8)).find("input").each(function(){
       res = $(this).attr("name").text();
       alert(res);
    }
});
}

任何人都可以帮我完成这项工作吗?

4 个答案:

答案 0 :(得分:2)

只需删除text()方法, attr("name") 将返回name属性的值,同时您也缺少""

function DownloadZip()
{
$('.DownloadZip').click(function(){    
    var res = "";
    $('#table_csrdownloadcenter').find("tbody").find("tr").find("td:nth-child(8)").find("input").each(function(){
    //                                                       ---^-----       ---^----
       res = $(this).attr("name");
       alert(res);
    }
});
}

答案 1 :(得分:2)

您可以使用:

res = $(this).attr("name");

而不是:

res = $(this).attr("name").text();

因为$(this).attr("name")已经为您提供了包含name属性值的字符串。

text()是一个jQuery方法,只有jQuery对象可以使用该方法,但$(this).attr("name")给你一个字符串,所以显然字符串不能应用jQuery方法。

此外,您的选择器周围缺少引号

find(td:nth-child(8))

应该是

find('td:nth-child(8)')

答案 2 :(得分:0)

迭代每个tr,然后查看8th td的input

var mappedAttributes = $("#table_csrdownloadcenter tr").map(function() {
    return $("td:eq(7) input", this).attr("name");
}).get();

这将创建每个name属性值的数组。

创建字符串:

var str = "";
$("#table_csrdownloadcenter tr").each(function() {
    str += $("td:eq(7) input", this).attr("name");
})

答案 3 :(得分:0)

$("td.dc-checkbox").find("input").each(function(){
  alert($(this).attr("name"));
});