2011-05-23 120 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