HTML
<ul class="tabbox">
<li></li>
,
<li></li>
,
<li></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
JQuery(我的想法 - 不起作用)
$(".tabbox").replace(',' , ''); // This was my idea, and it does not work ..
Run Code Online (Sandbox Code Playgroud)
如何从<ul>中删除?
在我看来,你问的是错误的问题.
如果目的是从<li>节点之间删除虚假文本节点(恰好包含逗号),则应该这样做:
$('.tabbox').contents().filter(function() {
return (this.nodeType === 3);
}).remove();
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/alnitak/gN7yM/的工作演示
请注意使用.contents()以确保文本节点包含在结果中.
如果你想要净化代码以删除任何不是<li>来自的代码<ul>,请使用:
$('.tabbox').contents().not(function() {
return (this instanceof HTMLLIElement);
}).remove();
Run Code Online (Sandbox Code Playgroud)
FWIW,因为@ShadowWizard报告说这不符合IE <8.0我试过:
$('.tabbox').contents().not('li').remove()
Run Code Online (Sandbox Code Playgroud)
它没有工作.阅读jQuery源代码似乎纯粹的字符串选择器完全忽略了文本节点,但这确实有效:
$('.tabbox').contents().not(function() {
return $(this).is('li');
}).remove();
Run Code Online (Sandbox Code Playgroud)
编辑我已经改变了上面的几个例子来.not()代替,.filter()以便删除双重否定.
清理列表并仅保留列表项的一种方法是这样的代码:
var list = $(".tabbox");
var items = $(".tabbox li");
list.html("");
items.each(function() {
list.append($(this));
});
Run Code Online (Sandbox Code Playgroud)
现场测试用例:http://jsfiddle.net/TS8Sd/
这不仅会删除逗号,还会删除不属于那里的任何其他文本或元素。