是否可以使用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('&nbsp').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,'');