2017-07-20 7 views
1

.px-sub-menu-itemのすべてのクラスがdiv内にラップされていることを確認するにはどうすればよいですか?WrapAll with NextUntil

(function($) { 
 
    $('.px-sub-menu-item').each(function() { 
 
    $(this).nextUntil('.px-sub-menu-item').addBack('.px-sub-menu-item').wrapAll('<div class="px-menu-wrap"></div>'); 
 
    }); 
 
})(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<nav> 
 
    <a href="#" class="px-main-menu-item">Home</a><br> 
 
    <a href="#" class="px-sub-menu-item">Submenu 1</a><br> 
 
    <a href="#" class="px-main-menu-item">Home 2</a><br> 
 
    <a href="#" class="px-sub-menu-item">Submenu 2</a><br> 
 
    <a href="#" class="px-sub-menu-item">Submenu 3</a><br> 
 
    <a href="#" class="px-main-menu-item">Home 3</a><br> 
 
</nav>

https://jsfiddle.net/kqzj1tex/

+0

あなたはあなたにHTMLを変換したい正確なHTMLの構造を示すことはできますか? –

+0

あなたはより明確にする必要があります、要素は異なるクラスを持ち、兄弟ではありません、どのようにそれらをラップしたいですか? – adeneo

+0

これから期待する出力は何ですか? –

答えて

1

wrapAlldivに全てのセレクタを含みます。それぞれ.px-sub-menu-itemをdivに分割したい場合は、wrap関数を使用する必要があります。

$('.px-sub-menu-item').wrap('<div></div>');
div > .px-sub-menu-item{ 
 
    color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<nav> 
 

 
<a href="#" class="px-main-menu-item">Home</a><br> 
 
<a href="#" class="px-sub-menu-item">Submenu 1</a><br> 
 
<a href="#" class="px-main-menu-item">Home 2</a><br> 
 
<a href="#" class="px-sub-menu-item">Submenu 2</a><br> 
 
<a href="#" class="px-sub-menu-item">Submenu 3</a><br>      
 
<a href="#" class="px-main-menu-item">Home 3</a><br> 
 

 
</nav>

+5

あなたは、OPがそれらをすべて個別にラップすると仮定しています。 'wrapAll()'の意味は少なくとも、兄弟にラッピング要素を共有させたいということです。 –

+0

実際、私は、次のメインメニュークラスがラップされる前のすべてのサブメニュークラスが必要です。 – Bob