2009-10-04 82 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