2012-02-29 102 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