使用jquery从无序列表中删除标记

时间:2012-11-24 10:13:04

标签: javascript jquery

在以下内容中,我需要删除标记代码<div class="sub"></div&gt;但它不满足于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>

6 个答案:

答案 0 :(得分:1)

尝试unwrap()

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

基本上,您正在寻找.sub的所有子元素,并展开它们或删除它们的父元素。

以下是演示:http://jsfiddle.net/yEseX/

答案 1 :(得分:0)

你可以这样做。

<强> Live Demo

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

答案 2 :(得分:0)

假设您可能有一个以上的sub个div,我建议:

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

答案 3 :(得分:0)

试试这个,

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

答案 4 :(得分:0)

试试这个:

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

Demo here

答案 5 :(得分:0)

我认为@ Abhilash的回答是迄今为止最好的,但我会略微修改选择器:

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

这将删除所有.sub元素,并保留其内容。

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