我在一行中有两个按钮,它们显示在两个td中,并且在ie中没有正确排列,我怀疑td中的隐藏空格(&;nbsp)可能在输入之后或输入按钮之前,不幸的是我无法访问自动生成的html代码。唯一的方法是使用jquery控制我有一个类似这样的jquery。
$("td:contains(' ')").css("display","none");
这是一个正确的方法来消除TD中的这一点吗?
不过,我在jquery方面的知识并不多……
谢谢!
阿基尔·保罗
不,你可以沿着这条线做一些事情:
$("td").html(function (i, html) {
return html.replace(/ /g, '');
});
Minitech,感谢您的快速反应,顺便问一下"G"在这行代表什么……替换(/amp;nbsp;/g,");"
@阿基尔保罗:它代表"全球"。如果没有全局标志,则最多只能进行一次替换,而不是全部替换。
jsfiddle jsfiddle.net/akhilpaul/flwab示例
@Akhilpaul:您忘记将jquery添加到jfiddle:jsfiddle.net/minitech/flwab/2:)
哎呀。。你说得对,非常感谢Minitech!!
一般来说,这种方法的唯一缺点(在这个特定的场景中可能是好的)是,任何绑定到旧HTML的构造(如数据和事件处理程序)都将被删除。
nbsp不是元素,因此不能隐藏它。
您可以做的是重写包含以下内容的元素…这样地:
$('#container').html( $('#container').html().split(' ').join('') );
另外,使用jquery.contains检测sp的位置,并设置它的父元素一个字体大小为0或display none的类也可以做到这一点。
注意,如果您选择重写HTML以删除不需要的nbsp,则之前附加的所有事件都将被删除。
如果我们采用问题标题("是否可以使用jquery删除' '………",则不回答OP的特定方案)用一般的方式回答这个问题(我认为这是有用的),那么任何使用.html()的回答都有一个根本的缺陷:用这种方式替换HTML也会删除与旧HTML相关联的任何数据和事件处理程序-不可取!它可能适用于OP的特定场景,但我认为以更一般的方式回答问题是有用的…
更好的方法是替换元素中单个文本节点的.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)。
使用此:
var td = $("td:contains(' ')");
var html = td.html();
html = html.replace(" ","");
td.html(html);
号
假设只有一个元素要替换,问题是有两个。
试试这个
$('#div').text($('#div').text().replace(/ /g, ' '));
。
我一直在努力解决这个问题,最终解决方案非常明显,而不是使用.html(),而是使用.text()。
例子:
var text = $(label).text();
text.replace(/ /gi,'');
。