2012-11-24 18 views
0

在下面的內容中,我需要刪除標記標記<div class="sub"></div>但不是它與jQuery的內容。這是爲了使菜單適應響應式佈局。使用jquery從無序列表中刪除標記

<nav id="top"> 
<ul> 
    <li class="ti" id="snw"> <a class="mm" href="/snowdepth/">Weather</a> 
     <div class="sub">  

      <ul> 
       <li><h2>Snowline</h2></li> 
       <li><a href="/alpen/nordliche%20ostalpen/">Nordliche Ostalpen</a></li>  
     </ul> 

     </div> 
    </li> 

    <li class="ti" id="blg"> <a class="mm" href="/live/">Weblog</a></li> 
</ul> 
</nav> 
+0

你已經試過了什麼?我們需要看代碼... –

回答

1

嘗試unwrap()

​$('.sub').find('ul').unwrap()​; 

從本質上講,你正在尋找的.sub的所有子元素,並展開他們或刪除他們的父母。

這裏的演示:http://jsfiddle.net/yEseX/

+0

不錯,我之前沒有遇到過這個功能。 – RichardTowers

+1

愛小提琴的網址:yEsex?爲什麼確實? – Abhilash

0

你可以這樣做。

Live Demo

$('.sub').parent().html($('.sub').html()); 
0

假如你可能有一個以上的分度sub類,我建議這樣的:

var container = $('#top'); 
container.html(
    container.html().split('<div class="sub">').join('').split('</div>').join('') 
); 
0

試試這個,

var content = $(".sub").html(); // stored ".sub" div content 
$(".sub").remove(); // remove ".sub" div 
$("#top #snw").after(content); // insert content where you want 
0

嘗試這個:

var list = $('#snw'); 
var html = list.html(); 
list.html(html.replace('<div class="sub">','').replace('</div>','')); 

Demo here

0

我覺得@ Abhilash的答案是最巧妙的,到目前爲止,但我將修改小幅選擇:

$('.sub').contents().unwrap(); 

這將刪除所有.sub元素,留下自己的內容到位。

JsFiddle:http://jsfiddle.net/yEseX/2/