使用字符串句子将每个单词与元素分开,但是有一些跨度

时间:2011-03-08 19:43:12

标签: javascript jquery html

我对这个问题感觉有点新手......

好的,面对这个例子:

<h1>A<span>really</span>long<span>sentence</span></h1>

我需要动态地将每个单词放在一个数组中,但是我需要保持顺序。类似的东西:

var words = ['A','really','long','sentence'];

我最初的想法是将所有跨度都放入一个数组中,所有单词都没有跨越到另一个数组,然后合并两者,但是,我没有看到任何javascript / jQuery方法来正确地收集没有跨度的单词阵列。

我确定我错过了什么。有什么想法吗?

由于

3 个答案:

答案 0 :(得分:3)

跨度使它变得混乱;你已经将跨度转换为空格,然后在空间上分割。

var array = $('h1').html().replace(/\<\/*span\>/g,' ').split(' ');

答案 1 :(得分:0)

function wordgrab(node){
    var A= [];
    if(node){
        node= node.firstChild;
        while(node!= null){
            if(node.nodeType== 3){
                if(/[a-zA-Z]/.test(node.data)){
                    A= A.concat(node.data.split(/\s+/));
                }
            }
            else A= A.concat(wordgrab(node));
            node= node.nextSibling;
        }
    }
    return A;
}

wordgrab(document.body)//使用任何父节点

答案 2 :(得分:0)

尽管在可能的情况下最好使用普通JS,但尝试可靠地解析HTML也是一件令人讨厌的事情。由于jQ已经在这里使用,我坚持使用$ .fn.text():

var a = $( '<h1>A <span>really</span> long <span>sentence</span></h1>' ).text().split( /\W+/ );