HTML
<ul class="tabbox">
<li></li>
,
<li></li>
,
<li></li>
</ul>
JQuery(我的想法-不起作用)
$(".tabbox").replace(',' , ''); // This was my idea, and it does not work ..
我该如何从 < ul > 中删除 , ?
(即:如何将列表中的逗号去除?)
HTML
<ul class="tabbox">
<li></li>
,
<li></li>
,
<li></li>
</ul>
JQuery(我的想法-不起作用)
$(".tabbox").replace(',' , ''); // This was my idea, and it does not work ..
我该如何从 < ul > 中删除 , ?
(即:如何将列表中的逗号去除?)
我认为你问错了问题。
如果意图是从 <li>
节点之间删除包含逗号的虚假文本节点,你应该这样做:
$('.tabbox').contents().filter(function() {
return (this.nodeType === 3);
}).remove();
在http://jsfiddle.net/alnitak/gN7yM/上有一个工作演示。
请注意使用.contents()
来确保文本节点包含在结果中。
如果您想要净化代码以删除除<ul>
中的任何内容以外的所有内容,请使用以下内容:
$('.tabbox').contents().not(function() {
return (this instanceof HTMLLIElement);
}).remove();
值得一提的是,由于@ShadowWizard报告称此方法不适用于IE < 8.0,因此我尝试了:
$('.tabbox').contents().not('li').remove()
它没有起作用。阅读jQuery源码,似乎纯字符串选择器完全忽略文本节点,但是这个可以工作:
$('.tabbox').contents().not(function() {
return $(this).is('li');
}).remove();
编辑 我已经修改了上面的一些例子,使用.not()
代替.filter()
,以避免双重否定。
return !(this instanceof HTMLLIElement);
- 请参见 http://jsfiddle.net/alnitak/gN7yM/3/。 - Alnitak!($(this).is('li'))
用于不兼容的浏览器...;-) - Alnitak清除列表并仅保留列表项的一种方法是使用以下代码:
var list = $(".tabbox");
var items = $(".tabbox li");
list.html("");
items.each(function() {
list.append($(this));
});
实时测试案例:http://jsfiddle.net/TS8Sd/
这不仅会删除逗号,还会删除任何不属于该位置的其他文本或元素。
var items = $("li", list);
会更好。 - kapavar tabbox = $(".tabbox"),
tabHtml = tabbox.html();
tabbox.html(tabHtml.replace(/,/g , ''));
这将替换它们所有。
编辑:
虽然,为什么每个li后面都要有一个“,”?
'.tabbox'
选择器,你可以将其保存在一个变量中。 - kapavar tabHtml = $(".tabbox").html();
$(".tabbox").html(tabHtml.replace(/,/g , '')); //@Tomgrohl already answered it
我的例子使用了{{link1:.html()
函数参数}}。
$('.tabbox').html(function (index, oldhtml) {
return oldhtml.replace(/,/g, '');
});
text
会“破坏”列表,尝试将文本添加到项目中并查看发生了什么。 - Shadow The Spring Wizard
</li>
标签之后? - xkeshav