0

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

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>');

任何帮助是极大的赞赏

4

1 回答 1

1

这是您的解决方案(假设您的 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();

假设的 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>
于 2012-09-05T14:05:49.800 回答