Javascript jquery查找元素中的文本节点,并使用标记进行连接和换行
我是一个新手,在处理一些没有元素的文本时遇到了困难,我试图用列表标记将文本包装在标记之外: HTMLJavascript jquery查找元素中的文本节点,并使用标记进行连接和换行,javascript,jquery,Javascript,Jquery,我是一个新手,在处理一些没有元素的文本时遇到了困难,我试图用列表标记将文本包装在标记之外: HTML <ul> <li><a href="#">item1</a></li> <li><a href="#">item2</a></li> <li><a href="#">item3</a></li> text &
<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>
要换行和合并的文本
这对我来说很有用,直到我遇到了一些字符串被标记打断的实例-即使我先取出
,它们仍然是单独的节点,并被包装成这样
$('ul').contents().remove('br')
.filter(function()
{
return (this.nodeType === 3 && $.trim(this.data) !== '');
}).wrap('<li class="nav current"></li>');
$('ul').contents().remove('br'))
.filter(函数()
{
return(this.nodeType==3&&$.trim(this.data)!=='';
}).wrap(“”);
非常感谢您的帮助这是您的解决方案(假设您的ul在本例中的id为“whatever”)
最终包装的文本存储在变量“finaltext”中
注意:取消注释注释注释行也会从页面中删除文本“要包装和组合的文本”,然后还将“要包装和组合的文本”作为新列表项追加,最后,去掉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();
var d=document.getElementById(“任意”);
var nds=d.childNodes;
var finaltext=“”;
$(nds).每个(函数(){
var trmdvl=$.trim(this.nodeValue);
if(trmdvl){
finaltext+=trmdvl+“”;
//$(this.remove();
}
});
//$(d).附加(“”+$.trim(finaltext)+“ ”);
//$('br')。删除();
假设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>
要换行和合并的文本
这显然是无效的标记
元素内部应仅包含
元素。这是无效的HTML,因此没有解决此问题的常规方法。这是可以解决的,但无效标记是低效代码的垫脚石。我假设您无法控制标记?谢谢,我知道标记问题,但不幸的是,它是动态生成的,并且由于我无法控制的原因,无法在此时修复point@user1649172尝试wrapAll
。可能有帮助。