Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery查找元素中的文本节点,并使用标记进行连接和换行_Javascript_Jquery - Fatal编程技术网

Javascript jquery查找元素中的文本节点,并使用标记进行连接和换行

Javascript 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 &

我是一个新手,在处理一些没有元素的文本时遇到了困难,我试图用列表标记将文本包装在标记之外:

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>
  • 要换行和合并的文本
这对我来说很有用,直到我遇到了一些字符串被
标记打断的实例-即使我先取出

,它们仍然是单独的节点,并被包装成这样

$('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
    。可能有帮助。