Jquery 删除<;a>;容器内

Jquery 删除<;a>;容器内,jquery,Jquery,我有这个: <ul> <li><a href="http://link.com">Link 1</a></li> <li class="remove-me"><a>Link 2</a></li> <li><a href="http://link.com">Link 3</a></li> </ul> 我

我有这个:

<ul>
   <li><a href="http://link.com">Link 1</a></li>
   <li class="remove-me"><a>Link 2</a></li>
   <li><a href="http://link.com">Link 3</a></li>
</ul>
我想要这个:

<ul>
   <li><a href="http://link.com">Link 1</a></li>
   <li class="remove-me">Link 2</li>
   <li><a href="http://link.com">Link 3</a></li>
</ul>
  • 链接2
如何使用jquery实现这一点?我想,
$('.remove me').removeAttr('a')但不是这样吗?

试试看

Edit:我发现您希望保留
a
元素的内容。在这种情况下,使用以下选项应该有效:

$('.remove-me a').replaceWith( function() {
    return $(this).contents();
} );

首先,假设您希望将文本保存在
li
中:

$('li.remove-me').each(
    function(){
        $(this).text($(this).find('a').text()).find('a').remove();
    });
$('li.remove-me').text(function(i, text) { return text; });

或者,或者:

var text = "";

$('li.remove-me').each(
    function(){
        text = $(this).text();
        $(this).empty().text(text);
    });
.

试试这个:

$('.remove-me').each(function(){
    $(this).text($(this).text());
});

这将从
li
中删除所有HTML标记(包括
a
):

$('li.remove-me').each(
    function(){
        $(this).text($(this).find('a').text()).find('a').remove();
    });
$('li.remove-me').text(function(i, text) { return text; });
如果您只想删除
a
标记:

 $('li.remove-me a').replaceWith(function() { return $(this).contents(); });
尝试: 1.

var val= $('.remove-me').text();
$('.remove-me').empty().text(val);
var val= $('.remove-me').text();
$('.remove-me').html(val);
$('.remove-me').each(
    function(){
        $(this).html($("a", this).first().text());
});
2.

var val= $('.remove-me').text();
$('.remove-me').empty().text(val);
var val= $('.remove-me').text();
$('.remove-me').html(val);
$('.remove-me').each(
    function(){
        $(this).html($("a", this).first().text());
});
3。

var val= $('.remove-me').text();
$('.remove-me').empty().text(val);
var val= $('.remove-me').text();
$('.remove-me').html(val);
$('.remove-me').each(
    function(){
        $(this).html($("a", this).first().text());
});

这将仅剥离
a
标签并保留其内容:

$(".remove-me a").replaceWith(function(i, content) { return content; })
这将有助于:
$('.remove me a').replace为($('.remove me a').text())

$('.remove me a')。remove()如果有多个
,则失败。删除我
。看到我的答案了。@Eric你是对的,我每个都添加了一个
。很喜欢你的回答,很干净。你从我这里得到+1。+1:我很惊讶它能起作用,但它确实起作用了!但这究竟是在哪里记录的呢???@Eric否,它将用它的内容替换a,并保留其中的任何标记,如img。参见@Tetaxa:no,看起来像是有意的行为。回调函数的第二个参数是内容,与
this
不同。编辑你的答案,我将删除我过于仓促的否决票。使用
这个可能更好。不过,innerHTML
可能会稍微快一点。@Tetaxa:事实上,我有点怀疑——直接的DOM操作应该比序列化为HTML并再次返回更快。此外,使用
innerHTML
可能会丢失附加事件处理程序之类的内容。