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 に答える