2012-01-18 113 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這裏