遍历each()循环中每个项目的子项目

时间:2018-07-31 05:11:14

标签: jquery each children

我目前有一个表的 selected tr,并且在此tr中有tdslabels。我想获得这些标签的价值。

这怎么可能?

代码

<tr>
    <td>  
        <span class="display-mode" style="display: inline;">1 </span> 
        <label id="lblid" class="edit-mode" style="display: none;">1</label> 
    </td>
    <td>  <span class="display-mode" style="display: inline;"> <label id="lblname">hans</label> </span> <input type="text" id="name" value="hans" class="edit-mode" style="display: none;"></td>
    <td>  <span class="display-mode" style="display: inline;"> <label id="lblid">1</label> </span> <input type="text" id="id" value="1" class="edit-mode" style="display: none;"></td>
    <td>  <span class="display-mode" style="display: inline;"> <label id="lblname">hans</label> </span> <input type="text" id="name" value="hans" class="edit-mode" style="display: none;"></td>
    <td class="col3Width">
        <button class="edit-user display-mode" style="display: inline-block;">Edit</button>
        <button class="save-user edit-mode" style="display: none;">Save</button>
        <button class="cancel-user edit-mode" style="display: none;">Cancel</button>
    </td>
</tr>

我尝试过这样的事情:

tr.children().each(function ()
{
    alert(this);
    $(this).children.each(function() 
    {
        alert(this);
    })

2 个答案:

答案 0 :(得分:1)

您可以遍历所有td并在其中找到label,然后使用.text()阅读其中的文本。参见下面的代码

$(function(){
  var tr = $("table tr:last"); // assuming that you got your tr already, i am considering last tr.
   //now find td and labels inside it
  tr.find('td').each(function(){
     console.log($(this).find('label').text());
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
    <td>  
        <span class="display-mode" style="display: inline;">1 </span> 
        <label id="lblid" class="edit-mode" style="display: none;">1</label> 
    </td>
    <td>  <span class="display-mode" style="display: inline;"> <label id="lblname">hans</label> </span> <input type="text" id="name" value="hans" class="edit-mode" style="display: none;"></td>
    <td>  <span class="display-mode" style="display: inline;"> <label id="lblid">1</label> </span> <input type="text" id="id" value="1" class="edit-mode" style="display: none;"></td>
    <td>  <span class="display-mode" style="display: inline;"> <label id="lblname">hans</label> </span> <input type="text" id="name" value="hans" class="edit-mode" style="display: none;"></td>
    <td class="col3Width">
        <button class="edit-user display-mode" style="display: inline-block;">Edit</button>
        <button class="save-user edit-mode" style="display: none;">Save</button>
        <button class="cancel-user edit-mode" style="display: none;">Cancel</button>
    </td>
</tr>
</table>

答案 1 :(得分:1)

您的问题

SELECT

$(this).children.each 是您可以在jQuery集合上调用的函数-它不是静态属性。如果您想通过children进行迭代,则必须调用 each

.children()

如果您已经选择了$(this).children().each ,则可以选择其后代并通过选择器(此处为tr,使用label进行过滤:

.find
const tr = $('#thetr');

tr.find('label').each(function() {
  console.log(this);
});