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
可能会丢失附加事件处理程序之类的内容。