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