2012-04-11 87 views
0
html_string "<span class=\"verse\"><strong>1<\/strong>\u00a0hello world how are you?,<span class=\"trans\" title=\"\u00a0Greek brothers.\">t<\/span> I am fine thank you.<\/span><span class=\"verse\"><strong>2<\/strong>\u00a0this world is very bad.<\/span><span class=\"verse\"><strong>3<\/strong>\u00aall me are good,<\/span>" 

我只是想提取其中具有类诗句跨度内的文本,它不应该包括与类反式从跨度文本。提取文本使用jQuery

结果必须是数组形式。

从上面的字符串我得导致这样

["\u00a0hello world how are you? I am fine thank you","\u00a0this world is very bad.","\u00aall me are good,"] 

感谢

回答

1

如何:

var html_string = "<span class=\"verse\">" 
        + "<strong>1</strong>\u00a0hello world how are you?," 
        + "<span class=\"trans\" title=\"\u00a0Greek brothers.\">t<\/span> " 
        + "I am fine thank you." 
       + "</span>" 
       + "<span class=\"verse\">" 
        + "<strong>2</strong>\u00a0this world is very bad." 
       + "</span>" 
       + "<span class=\"verse\">" 
        + "<strong>3<\/strong>\u00aall me are good," 
       + "</span>"; 

// Build up the DOM in a hidden element we can parse through 
var $html = $('<div>',{html:html_string}).hide().appendTo('body'); 

// loop through each verse  
$html.find('.verse').each(function(i,e){ 
    // grab the verse, but first delete any span.trans 
    var verse = $(e).find('span.trans').remove().end().text(); 
    // console.log(verse); 
}); 
// remove the html from the DOM 
$html.remove(); 

你应该能够循环播放,而不将其添加到DOM,但由于某种原因,我无法让它工作。可能是因为晚了,或者我的手指在晚上罢工。无论哪种方式,如果有人找到一种方法来做到这一点,但不附加它,请张贴,我会投票。

+0

和强制性演示:http://jsfiddle.net/rWYzb/ – 2012-04-11 02:24:30