我是一个新手,并且很难找到一些没有元素的文本,我试图用带有列表标记的标签来包装文本:
http://jsfiddle.net/danb/7xu6A/
HTML
<ul>
<li><a href="#">item1</a></li>
<li><a href="#">item2</a></li>
<li><a href="#">item3</a></li>
text <br>to wrap and combine
<li><a href="#">item4</a></li>
</ul>
这对我有用,直到我遇到一些字符串被标签打破的情况 - 即使我首先取出<br>
它们仍然是单独的节点并且被包裹起来。
$('ul').contents().remove('br')
.filter(function()
{
return (this.nodeType === 3 && $.trim(this.data) !== '');
}).wrap('<li class="nav current"></li>');
非常感谢任何帮助
答案 0 :(得分:1)
这是您的解决方案(假设您的ul在此示例中具有“无论什么”的ID)
您的最终包装文本存储在变量'finaltext'
中注意:取消注释注释行还会从页面中删除文本“要包装和合并的文本”,然后还将“text to wrap and combine”作为新列表项追加,并且最后,取出br标签!
var d = document.getElementById("whatever");
var nds = d.childNodes;
var finaltext = "";
$(nds).each(function(){
var trmdvl = $.trim(this.nodeValue);
if(trmdvl){
finaltext += trmdvl + " ";
//$(this).remove();
}
});
//$(d).append("<li>" + $.trim(finaltext) + "</li>");
//$('br').remove();
下面假设HTML:
<ul id="whatever">
<li><a href="#">item1</a></li>
<li><a href="#">item2</a></li>
<li><a href="#">item3</a></li>
text <br>to wrap and combine
<li><a href="#">item4</a></li>
</ul>