【问题标题】:Select the value of an attribute in jQuery在jQuery中选择属性的值
【发布时间】:2014-03-28 01:02:35
【问题描述】:

我有下表:

<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>

对于每个 &lt;tr&gt;我想将第8个&lt;td&gt;中的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);
    }
});
}

谁能帮我完成这个工作?

【问题讨论】:

    标签: jquery html-table jquery-selectors


    【解决方案1】:

    只需删除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);
        }
    });
    }
    

    【讨论】:

      【解决方案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)')
      

      【讨论】:

        【解决方案3】:

        迭代每个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");
        })
        

        【讨论】:

        • 谢谢,它就像一个魅力,但如果我想获得选中复选框的名称,我试图写 input:checked 但它不起作用......有什么想法吗?谢谢
        【解决方案4】:
        $("td.dc-checkbox").find("input").each(function(){
          alert($(this).attr("name"));
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-04
          • 1970-01-01
          • 1970-01-01
          • 2010-10-19
          • 1970-01-01
          • 1970-01-01
          • 2011-05-16
          相关资源
          最近更新 更多