2009-10-04 40 views
0
$("br").parent().contents().each(function(i) { 
    if(this.nodeType == "#Text") 
    { 
     alert(this.textContent); 
    } 
}); 

我试图选择所有的文本没有被HTML标签包围,而是通过<br>无文本越来越节点

分离这样做,有时会返回大量的警报消息,即使有应该只有一对夫妇。

我曾尝试使用

if(this.nodeValue != "") or if(this.textContent != "") 

但尽管如此,空警报消息弹出来过滤出来。

我怀疑它的html文档中的空格(我不控制它)。我只想显示this.textContent,它实际上有可见的文字。

回答

0

文本节点的节点类型是3,那么:

$('br').parent().contents().each(function() { 
    if (this.nodeType == 3) { 
     var text = (this.textContent ? this.textContent : this.innerText), temp = text.replace(/\s+/g, '') 
     if (temp.length) { 
      alert(text) 
     } 
    } 
}) 

现场演示:http://jsbin.com/abalu

+0

我得到的文本是未定义的错误。 text = text.replace(/ \ s +/g,'') – KJW 2009-10-04 03:24:50

+0

试试我的更新示例。我之前的一个没有考虑到br元素。 – 2009-10-04 03:25:33

+0

如果要从警报中去除空白,可以使用.replace(/^\ s + | \ s + $ /,'')。 – 2009-10-04 03:29:59