我对这个问题感觉有点新手......
好的,面对这个例子:
<h1>A<span>really</span>long<span>sentence</span></h1>
我需要动态地将每个单词放在一个数组中,但是我需要保持顺序。类似的东西:
var words = ['A','really','long','sentence'];
我最初的想法是将所有跨度都放入一个数组中,所有单词都没有跨越到另一个数组,然后合并两者,但是,我没有看到任何javascript / jQuery方法来正确地收集没有跨度的单词阵列。
我确定我错过了什么。有什么想法吗?
由于
答案 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+/ );