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());