如何找到所有外部标记,不包含子标记

时间:2015-08-07 05:11:02

标签: jquery

我想查找所有外部标记,并按顺序设置每个id

<p><span/></p>
<table>
   <tr>
       <td></td>
   </tr>
</table>

我想要

 <p id = "1"><span/></p>
    <table id = "2">
       <tr>
           <td></td>
       </tr>
    </table>

但是当我使用find(“*”)时,会找到p ,span,table,tr,td

我的js是

$("body").find("*").each(function (index) {
       $(this).attr("id",index);
   });

结果是

<p id = "1"><span id = "2"/></p>
    <table id = "3">
       <tr id = "4">
           <td id = "5"></td>
       </tr>
    </table>

如何解决?

1 个答案:

答案 0 :(得分:0)

您需要的是仅定位body元素的子元素,而不是所有后代,因此请使用.children()

$("body").children().attr('id', function(idx) {
  return idx
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p><span>1</span></p>
<table>
  <tr>
    <td>2</td>
  </tr>
</table>

如果你只想找不到孩子,那么

$("body").find(' > *').attr('id', function(idx) {
  return idx
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p><span>1</span></p>
<table>
  <tr>
    <td>2</td>
  </tr>
</table>