2012-02-27 96 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