2010-08-04 60 views
3

我有如下一个HTML页面:的jQuery遍历div和获得它的跨度细节

<div id="test1"> 
    <table> 
     <tr> 
      <td><span id="234">ABKO</span></td> 
     </tr> 
     <tr> 
      <td><span id="1234">ABKO2</span></td> 
     </tr> 
     <tr> 
      <td><span id="2634">ABKO3</span></td> 
     </tr> 
    </table>  
</div> 
<div id="test2"> 
    <table> 
     <tr> 
      <td><span id="233">ABKOw</span></td> 
     </tr> 
     <tr> 
      <td><span id="1236">ABKOc</span></td> 
     </tr> 
     <tr> 
      <td><span id="2635">ABKOv</span></td> 
     </tr> 
    </table>  
</div> 

我怎样才能使用jQuery之间的所有跨度细节? 例如,如果我认为第一个div = test1的话,我希望所有与他们的ID和文本 作为 div的,索安 - > test1的 跨度=> ID 233 & & ABKO 跨度=> ID 1234 & & ABKO2 跨度=> ID 22634 & & ABKO3

+2

使用数字来启动一个ID是无效的HTML。它必须以字母开头。 – user113716 2010-08-04 17:23:03

回答

7

您可以通过所有的<span>元素,像这样重复:

$('div span').each(function(){ 
    var $span = $(this); 

    var divId = $span.closest('div').attr('id'); 
    var spanId = $span.attr('id'); 
    var spanTxt = $span.text() 

    // do something with the above 
}); 

你可以看到它in action here

这是干什么建立一个嵌套在div中的span元素列表(CSS selectordiv span)。然后使用.each()方法遍历此列表。

在每次迭代中$(this)指的是匹配的span元素。我们在$span变量中捕获了一个参考,所以我们不会重新创建相同的jQuery对象。

然后,我们使用.closest()方法来查找与给定选择器(div)匹配的量程的第一个祖先。这得到我们的父母div。

最后.attr().text()获取ID属性和文本值。

+1

用于jsfiddle上的演示 – 2010-08-04 17:30:13

5

您可以通过ID找到一个元素,如$('#test1')。您可以通过标签$('span')$('div')查找元素。

如果你想找到所有属于 “测试1” 的跨越:

$('#test1').find('span')

$('#test1 span')

可以遍历元素的集合与each()

$('#test1').find('span').each(function() { 
    var id = this.id; 
    var value = $(this).html(); 
    // do whatever... 
}); 

希望你能从这里解决其他问题。