2012-01-18 153 views
0

在阅读http://api.jquery.com/remove/的删除功能的文档后,发现以下代码可行。jQuery.remove()未按预期工作(?)

如果我有一个这样的输入元素:

<input id="hiddenRatings" name="languageRatings" type="hidden" value="{5, 3, 2, , , {5, 3, 4, , , {5, 3, 2}}}"/> 

我想我应该能够删除它只是做

$().ready(function() { 
    $('#hiddenRatings').remove(); 
}); 

但什么也没有发生,我输入元素仍然存在。我究竟做错了什么?

编辑:废话......它的确行得通!我使用的是Chrome工具,而且我在“脚本”选项卡而不是“元素”选项卡中查看了DOM。该脚本选项卡当DOM变化明显doesn't更新...

+1

似乎为我工作:http://jsfiddle.net/9EsSg/,这是奇怪的是诚实的。 '$()'应该返回一个空集。更多信息可以在['jQuery()'文档](http://api.jquery.com/jQuery/)中找到。只需将回调函数传递给'$()',那可能会有效。 – 2012-01-18 15:10:44

+1

关于我的第一条评论,毕竟它并不陌生。 'ready'总是将回调添加到'readyList',而不管选择了哪些元素。 [见源代码](https://github.com/jquery/jquery/blob/1.7.1/src/core.js#L253)。尽管使用'$(document).ready(...)'或'$(...)'仍然是比较常见的。 – 2012-01-18 15:19:44

+0

真正奇怪的是jQuery需要一个实例化的对象来首先添加'DOMContentLoaded'回调 – Esailija 2012-01-18 15:23:37

回答

1

我的猜测是您意思使用这个:

$(document).ready(function() { 
    $('#hiddenRatings').remove(); 
}); 

使用$(document)等待所有HTML元素被加载到DOM中。我不确定是否$()实际上做了任何事情:你的函数将在元素被加载到DOM之前被执行(或者甚至可能根本不被执行,因为我不确定“$()”是否实际工作) 。

希望帮助

+1

从文档:*“从jQuery 1.4开始,调用没有参数的'jQuery()'方法返回一个空的jQuery集合(带有'.length'属性为0)。在之前的jQuery版本中,这将返回一个包含'document'节点。“*,但令人惊讶的是它仍然在1.7中工作,请参阅我的评论。 – 2012-01-18 15:14:03

+0

奇怪...我没有想过如果,但我实际上有$()。ready(function()无处不在,并且所有代码都可以工作(大约100行JS),除此之外 – Daniel 2012-01-18 15:18:21

+0

@Daniel:看到我对你的问题的第二个评论。如果这不起作用,你的问题就在别处。 – 2012-01-18 15:20:21

1

也许你应该做的$(document).ready( ...

它为我的作品DEMO这里