2012-02-27 108 views
-1

我正在构建一个jQuery迷你插件来显示打印预览,然后打印我的应用程序运行的一些报告的结果。我需要能够不打印某些部分(例如:没有结果的报告,UI元素等)。我试过css @media print无济于事。我不知道为什么它不起作用,但我已经完全按照w3schools媒体类型页面上的描述来实现它,IE仍然希望打印这些元素。如何从jQuery选择或克隆的html中删除元素?

所以我决定蛮横逼迫它,只是从克隆的DOM中删除.noPrint元素。事实证明,这将解决我期望通过我的计划“输出到.pdf”功能的问题。

我的问题是,虽然

$(clonedHtml).find('.noPrint') 

返回NOPRINT元素的集合相当不错,

$(clonedHtml).remove('.noPrint') 

不会删除任何东西。我也尝试删除它是这样的:

var removeMe = $(clonedHtml).find('.noPrint'); 
    clonedHtml.remove(removeMe); 

这显然不工作。此语法基于API文档的第二个示例:

$("p").remove(":contains('Hello')"); 
    Removes all paragraphs that contain "Hello" from the DOM. Analogous to doing 
    $("p").filter(":contains('Hello')").remove(). 

真正的问题:为什么?我检查了remove()的API文档,我已经阅读了我在google上可以找到的所有内容,并且已经搜索了jQuery论坛并且找不到任何东西。

+1

第一名谷歌和论坛之前阅读,是API规范http://api.jquery.com/remove/ – 2012-02-27 07:58:27

+0

我没有投票你失望,因为这个问题是制定完善;在我的评论中,我只是想让你注意一下,在这里提问的时间可能足以通过文档 – 2012-02-27 09:52:04

+0

再读一遍。删除我的评论。对我的假设抱歉。但是,那是我看到的第一个地方。更新我的问题以反映这一事实,希望能够帮助任何未来搜索此内容的人。谢谢。 – Will 2012-02-27 09:57:09

回答

5

试试这个:

$(clonedHtml).find('.noPrint').remove(); 
+0

AHHHHH!谢谢!我是一个白痴 - 除了我使用的是实际的文档而不是克隆以外,我的测试行的大量列表中注明了确切的行。它在我一直在做的大量实验中迷失了。我会在8分钟左右接受。这说...任何想法为什么$(clonedHtml).remove('。noPrint');不起作用? – Will 2012-02-27 08:01:28

+1

@Will:欢迎您:)由于您对remove方法的语法错误,所以无法正常工作。 – Sarfraz 2012-02-27 08:04:56