3

nav 要素を 1 レベル上に移動しようとしているので、最終的には次のようになります。

<div>
 <nav>
   <a href='#'>hello</a>
   <a href='#'>hello</a>
 </nav>
</div>

 <nav>
    <a href='#'>hello</a>
    <a href='#'>hello</a>
 </nav>
<div>
</div>

unwrap(); を使用しようとしています。成功しませんでした。

$('div > nav').unwrap();

理由は完全にはわかりません。

4

4 に答える 4

6

unwrapnav をアンラップすると、DOM から div が削除されます。このようなことを試してください。

var $div = $('div');
$div.before($div.children('nav')); 
//$div.before($div.children()); //For all children use children()

複数ある場合は、次の方法を試してください。

$(function(){ //Make sure it is inside DOM ready
     var $div = $('div:has("nav")');
     $div.before(function () {
          return $(this).children("nav");
    });
});
于 2013-10-16T20:54:26.057 に答える
6

insertBefore()詳細情報を試す必要があります: http://api.jquery.com/insertBefore/

$("nav").insertBefore("div");

倍数があり、それが1つ上のレベルに移動されていることを確認したい場合は、divこれをparent試してください:

$("div > nav").each(function (){
    $(this).insertBefore($(this).parent());
});

それらがすべて内部にない場合は、div次のようにします。

$("nav").each(function (){
    $(this).insertBefore($(this).parent());
});
于 2013-10-16T20:55:02.520 に答える
1

これは私の場合、(クラスを介して) 選択した div を 1 レベル上に再配置する必要がありましたが、うまく機能しました。

$(".className").each(function (){
  $(this).insertBefore($(this).parent());
});
于 2014-01-04T13:46:14.053 に答える
1

$('nav').insertBefore($('nav').parent());

これにより、要素が 1 つ上に移動します。

JSフィドルhttp://jsfiddle.net/tsuUE/

あなたはおそらくあなたのnavandを与えて、idその要素だけを選択したいと思うでしょう。

于 2013-10-16T20:59:11.330 に答える