如何迭代不寻常的html元素

时间:2011-06-04 15:59:06

标签: javascript jquery html

我正在使用CodeRay生成html代码,而且几乎所有文本元素都包含在span中,但有些文本元素却没有。在示例中,您可以看到primary_key_prefix_type根本没有包含。

<span class="no">1172</span><span class="r">case</span> primary_key_prefix_type
<span class="no">1173</span><span class="r">when</span> <span class="sy">:table_name</span>

但是我需要使用jQuery中的next()prev()函数来遍历所有元素。 因此我错过了primary_key_prefix_type,因为它不是jQuery的元素。如何'看'所有元素?感谢。

2 个答案:

答案 0 :(得分:3)

您也可以使用包含文本节点的.contents()

$("#test").contents().each(function() { 
    //do something with each node
});

<强> Example on jsfiddle

更新
.nextSibling将获得下一个元素,无论它是元素还是文本节点。

$(".r")[0].nextSibling;

<强> Example on jsfiddle

答案 1 :(得分:2)

您可以使用.contents()选择所有元素和文本节点。

$('#container').contents().each(function() {
   if (this.nodeType == 3 || this.tagName == 'SPAN')
   {
       var text = $(this).text();
       // Don't act on empty text i.e. just spaces/tabs
       if (!text.match(/^[\s\t]*$/))
       {
          alert(text);  
       }
   }
});

小提琴: http://jsfiddle.net/Zrb7F/3/