HTML
<ul class="tabbox">
<li></li>
,
<li></li>
,
<li></li>
</ul>
JQuery(我的想法 - 不起作用)
$(".tabbox").replace(',' , ''); // This was my idea, and it does not work ..
如何从&lt;中删除? ul&gt; ?
答案 0 :(得分:8)
在我看来,你问的是错误的问题。
如果目的是从<li>
节点之间删除虚假文本节点(恰好包含逗号),则应该这样做:
$('.tabbox').contents().filter(function() {
return (this.nodeType === 3);
}).remove();
http://jsfiddle.net/alnitak/gN7yM/
的工作演示请注意使用.contents()
确保文本节点包含在结果中。
如果您想要清除代码以从<li>
中删除不属于<ul>
的任何,请使用:
$('.tabbox').contents().not(function() {
return (this instanceof HTMLLIElement);
}).remove();
FWIW,因为@ShadowWizard报告说这不适用于IE&lt; 8.0我试过了:
$('.tabbox').contents().not('li').remove()
并且没有工作。阅读jQuery源代码似乎纯粹的字符串选择器完全忽略文本节点,但 工作:
$('.tabbox').contents().not(function() {
return $(this).is('li');
}).remove();
编辑我更改了上面的几个示例,使用.not()
代替.filter()
,以便删除双重否定。
答案 1 :(得分:4)
清理列表并仅保留列表项的一种方法是这样的代码:
var list = $(".tabbox");
var items = $(".tabbox li");
list.html("");
items.each(function() {
list.append($(this));
});
实时测试案例:http://jsfiddle.net/TS8Sd/
这不仅会删除逗号,还会删除不属于那里的任何其他文本或元素。
答案 2 :(得分:3)
var tabbox = $(".tabbox"),
tabHtml = tabbox.html();
tabbox.html(tabHtml.replace(/,/g , ''));
这将取代所有这些。
编辑:
虽然,为什么你会在每个li之后有一个','?
答案 3 :(得分:2)
var tabHtml = $(".tabbox").html();
$(".tabbox").html(tabHtml.replace(/,/g , '')); //@Tomgrohl already answered it
答案 4 :(得分:0)
我的示例使用function parameter for .html()
。
$('.tabbox').html(function (index, oldhtml) {
return oldhtml.replace(/,/g, '');
});