2012-02-29 154 views
0

有一段文字(如果它包含在HTML文件中),如何獲得其最後一個字符與javascript相關的節點?舉例來說,有這個HTML:通過文本獲取dom節點

<p> 
    "foo " 
    <span>bar</span> 
    " foo bar" 
</p> 

,並具有字符串「富B」,你會怎麼做JavaScript來檢索節點(如果可能的話,whithin該節點的偏移量),其中的最後一個字符首先出現的是(在這種情況下是跨度節點)?

我也可以使用Jquery,但據我所知,這並不容易,因爲該庫不處理文本節點。

+0

也許是,jQuery( 「[HTML * = '富B']」)會工作,或者至少縮小搜索範圍。 – kirilloid 2012-02-29 10:22:21

回答

0

試試這個:

var str='foo b', 
firstMatch = $('body > *:contains("' + str + '")').first(), 
offset = firstMatch.text().trim().search(str) + str.length 

console.log(firstMatch.get(),offset) 
+0

我認爲那段代碼會返回包含指定文本的body的第一個子元素(在這個例子中,它會返回p元素,假設它在body標籤下)。無論如何,在這種情況下,Jquery不會工作,因爲據我所知,它不處理文本節點,因此,如果我想要獲得第一次出現「fo」的節點,我期望接收文本節點「foo」,並且Jquery可能會返回p節點。 – davids 2012-02-29 11:12:07

+0

對不起,我沒有意識到文本節點也許這可以幫助你,雖然:[link] http://stackoverflow.com/questions/298750/how-do-i-select-text-nodes-with-jquery – Avi 2012-02-29 12:19:20