Javascript 使用jQuery选择子文本
我的结构如下所示:Javascript 使用jQuery选择子文本,javascript,jquery,select,Javascript,Jquery,Select,我的结构如下所示: <form> <input type="text" /> <input type="text" /> ... <input type="radio" /> <input type="whatever" /> Here I have some text </form> 但它不是很健壮。特别是在IE(所有版本)上失败,应用于文本块的.toString()返回文
<form>
<input type="text" />
<input type="text" />
...
<input type="radio" />
<input type="whatever" />
Here I have some text
</form>
但它不是很健壮。特别是在IE(所有版本)上失败,应用于文本块的.toString()返回文本本身。我当然可以试试
$('form').contents().filter(function(){
return (this.toString() != '[object]')
}).remove();
但我正在寻找更好的解决方案
我该如何删除文本
使用jQuery或纯Javascript的解决方案对我都有好处。试试这个,而不仅仅是“this.toString()”:
你也可以检查节点类型,但我永远记不起怎么做;我会去查的,但有人会比我先查到:-)
编辑告诉你了 您可以筛选
this.nodeType==Node.TEXT\u Node
。看看。怎么样:
$('form').contents().filter(function(){
return !this.outerHTML;
}).remove();
如果您使用1.4版,您可以
var $temp= $('form').children().detach();
$('form').empty().append($temp);
它将删除所有子元素,清空表单(文本…)并重新插入元素
1.3.x中的相同内容需要额外的步骤
var $temp= $('<div />');
$('form').children().appendTo($temp);
$('form').empty().append($temp.children());
var$temp=$('');
$('form').children().appendTo($temp);
$('form').empty().append($temp.children());
[更新]关于Andrea的评论
.contents()和.children()文件
方法类似,只是
前者包括文本节点以及
结果jQuery中的HTML元素
反对
这看起来很有趣,但它有效吗?我现在没有时间去尝试。我认为这篇文章也算是一个孩子。@Andrea,两个例子都有各自的版本。。更新答案以显示it文档。。
var $temp= $('form').children().detach();
$('form').empty().append($temp);
var $temp= $('<div />');
$('form').children().appendTo($temp);
$('form').empty().append($temp.children());