2011-05-23 121 views
1

我很好奇,如果有人知道爲什麼這段jQuery代碼不會刪除圖像?JQuery刪除圖像

var a = $('#tblMain').clone().remove('img'); 

正在選擇表格。這是試圖把網頁上的表和出口到Excel,但我不希望圖像導出。

謝謝

+5

'(img)'是指一個變量名,你不需要'('img')'作爲選擇器嗎? – pimvdb 2011-05-23 14:58:05

+0

把你的評論作爲答案! – 2011-05-23 15:02:13

回答

5

做這樣的:

$("#tblMain").clone().find("img").remove(); 

編輯:好的,這裏的問題:

選擇:一個選擇表達式 過濾將匹配元素集合移除到 。

http://api.jquery.com/remove/

img.remove('img')是過濾項目集合中jQuery對象,而不是找到項本身中的元素。在這種情況下,jquery對象只包含一個項目,即克隆的表格。因此,.remove('img')什麼都不刪除,因爲jquery對象不包含任何圖像(只包含它包含的項目中的圖像)。

+0

這不保留表格的其餘部分。謝謝 – Michael 2011-05-23 15:38:27

+0

我不確定你的意思是不保留表格的其餘部分。我相信這是做到這一點的最佳方式。如果您的目的是鏈接,您可以使用'.end'返回到表格本身。就像這樣:http://jsfiddle.net/rFVVv/或者在使用find之前將表分配給一個變量。 – 2011-05-23 15:43:51

+0

謝謝,解決方案最終成爲'$(「#tblMain」)。clone()。find(「img」)。remove()。end();' – Michael 2011-05-23 15:48:37

4

我不知道發生了什麼在幕後,但你指的是一些所謂的img變量,而你很可能只是想選擇所有img元素。在這種情況下,你應該使用一個選擇爲字符串

var a = $('#tblMain').clone().remove('img'); 

編輯:.clone.remove似乎並不確實工作。我用這個解決辦法,其實際工作:

.find('img').each(function() {$(this).remove()}); 
+0

我很抱歉,我已經修復了上面提到的代碼。我確實在代碼中有'img'。 – Michael 2011-05-23 15:11:40

+0

對不起,看我的編輯。 – pimvdb 2011-05-23 15:18:26

+0

有些東西是你的編輯沒有點擊我。 '$(#tblMain')。clone()。find('img')'只會返回想象。如果你刪除它,那麼a將是空白的。 – Michael 2011-05-23 15:33:37