是否可以使用JQuery删除’&nbsp’..?
我连续两个按钮,它们显示在两个td中,并且它在IE中没有正确排列,我怀疑在输入之后或输入按钮之前td的某处隐藏空间(&nbsp),遗憾的是我无法访问html代码,它自动生成。 唯一的方法是通过使用jQuery控制我有一个像这样的jQuery ..
$("td:contains(' ')").css("display", "none");
这是摆脱td的正确方法吗?
我不知道JQuery的巨大知识..
谢谢!
阿希尔保罗
不,你会沿着这些方向做点什么:
$("td").html(function (i, html) { return html.replace(/ /g, ''); });
NBSP不是元素,因此您无法隐藏它。
你可以做的是重写包含NBSP的元素……像这样:
$('#container').html( $('#container').html().split(' ').join('') );
同时使用jquery.contains检测NBSP的位置并将其父元素设置为字体大小为0或显示为none的类可以解决问题。
请注意,如果您选择重写HTML以删除不需要的NBSP,则将删除之前附加的所有事件。
用这个:
var td = $("td:contains(' ')"); var html = td.html(); html = html.replace(" ",""); td.html(html);
如果我们采用问题标题(“是否有可能使用JQuery删除’并使用JQuery ……?”)而不是回答OP的特定情况,并以一般方式(我认为有用)回答这个问题,那么任何答案都可以使用.html()
有一个基本缺陷:用这种方式替换html也会删除与旧html相关的任何数据和事件处理程序 – 不可取! 它可能适用于OP的特定情况,但我认为以更一般的方式回答这个问题是有用的……
更好的方法是替换.textContent
中单个文本节点的.textContent
。 所以给出以下标记:
Here is a link Here is a paragraph with another link inside: another link
And some final text
我们可以删除所有
(这是unicode \u00A0
– 在这里看到更多相关信息)如下:
$('.container, .container *').contents().each(function() { if (this.nodeType === 3) { // text node this.textContent = this.textContent.replace(/\u00A0/g, ''); } });
$('.container, .container *')
选择容器及其中的所有元素,然后.contents()
选择这些元素的所有子元素,包括文本节点。 我们遍历每个节点,对于我们遇到的每个文本节点( nodeType === 3
),我们替换了
( \u00A0
)带有空字符串。
我一直在努力解决这个问题,最后解决方案非常明显,而不是使用.html()
必须使用.text()
例:
var text = $(label).text(); text.replace(/ /gi,'');