0

まず、私は に精通しています。wrapAll()それは私が必要とするものではありません。変更できないマークアップがいくつかあり、すべてを でラップする必要があり<li>ます。

これが私がやろうとしていることです:

$('nav[role="breadcrumb"] ul a').wrap('<li></li>');

$('nav[role="breadcrumb"] ul li:last').after('<li>');

$('nav[role="breadcrumb"] ul').append('</li>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav role="breadcrumb">
  <ul class="clearfix">
    <a href="http://eggaday.armystage.com/">Home</a>
    <a href="http://eggaday.armystage.com/health-care-professionals/">Health Care Professionals</a> Healthy Choices Cholesterol Kits
  </ul>
</nav>

<li>問題は、jQuery がこれらの各タグを閉じることです。元のマークアップは次のとおりです。

<nav role="breadcrumb">
  <ul class="clearfix">
    <a href="http://eggaday.armystage.com/">Home</a>
    <a href="http://eggaday.armystage.com/health-care-professionals/">Health Care Professionals</a> Healthy Choices Cholesterol Kits
  </ul>
</nav>

ご覧のとおり、これの下部にゆるいテキストがあり<ul><li>.

4

3 に答える 3

2

.contents()テキストノードを含むすべての子を取得します

$('nav[role="breadcrumb"] ul').contents().filter(function() {
   return $.trim($(this).text())!=="";
}).wrap('<li/>');

編集: 空白のテキスト ノードを取り除くためのフィルター メソッドを追加しました

于 2012-09-19T21:22:21.840 に答える
0

jQuery は完全な要素でのみ機能します。終了タグまたは開始タグだけを追加することはできません。

ul に他のリスト項目がない場合は、単に wrapInner を使用できます

$('nav[role="breadcrumb"] ul').wrapInner("<li />");

LI が含まれている場合、最も簡単な方法は、それらを切り離し、内部でラップしてから追加することです。

var $lis = $('nav[role="breadcrumb"] ul > li').detach();
$('nav[role="breadcrumb"] ul').wrapInner("<li />").prepend($lis);
于 2012-09-19T21:14:45.353 に答える
0

最初に <li> を作成してから、セレクターを追加してみてください。

var $li = $('<li>').append('nav[role="breadcrumb"] ul a');

次に、 $li を使用して、好きな場所を置換または追加します。

于 2012-09-19T21:22:01.480 に答える