简体   繁体   中英

How to remove only tag using jQuery?

I want to remove the span using jQuery, I have tried the .unwrap(); but it's not working.

<div>
<ul>
<li><a href="#"><span>link</span></a></li>
<li><a href="#"><span>link</span></a></li>
</ul>
</div>

Obviously, unwrap doesn't work as the span s only have text nodes inside them and jquery doesn't handle text nodes too well... this works however (you could use also jQuery.text instead of jQuery.html if you're sure that the span only contains text):

$('li a span').replaceWith($('li a span').html());

Working example

Edit : Actually, it seems that unwrap works as well if you use jQuery.contents to work around the jquery's inability to directly select text nodes:

$('li a span').contents().unwrap();
$('li').find('span').remove();

or

$('li').find('span').detach();

If you want to remove the wrapping only, try

var buffer = $('li').find('span').text();
$('li').find('span').parent().html(buffer);

Unwrap should work. It's possible you're not successfully selecting the span which you wish to unwrap. You can try the following code which should select that span successfully:

$("li a span").unwrap()

It's a bit unclear from your question what exactly you're trying to do. It's also unclear whether you're having trouble with the selectors or with the jquery api. To get a better handle on jquery's selectors I recommend you install firebug and firequery , as it can really help you understand what you're selecting.

$("span").each(function() {
    var content = $(this).text();
    $(this).remove();
    $("a").html(content);
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM