2011-11-29 45 views
1

我給colorbox調用了兩次。首次通話是點擊。colorbox callback confusion

$("a.nivoImageLink").colorbox({ 
    opacity:.8, 
    onComplete:function() { 
     cboxPrint(false); 
    } 
}); 

其次:當顏色框打開時,您可以點擊打印內容顏色框打開縮略圖上的打印圖標,點擊後,打印窗口打開,打印過程後的顏色框再次關閉:

$("a.print").click(function() { 
    $("a.nivoImageLink:not(:hidden)").colorbox({ 
     open:true, 
     onComplete:function() { 
      cboxPrint(true); 
     } 
    }); 
}); 

此功能到目前爲止。但是當我在打印圖標(第二個調用)上打開colorbox時,無論我打哪個電話,colorbox都會打開。這是回調函數:

function cboxPrint(autoprint) { 
    if (autoprint) { 
     setTimeout(function() { 
      window.print(); 
      $.colorbox.close(); 
     },800); 
    } else { 
     $("a.cboxPrint").click(function() { 
      window.print(); 
     }); 
    } 
}; 

有人能幫我嗎?

回答

1

我不太清楚我是否理解你的問題,現在還是太早了^^。你有沒有考慮過colorbox的工作原理?一旦打開colorbox,它會創建一些標記,然後隱藏該視圖,並在您想再次顯示時取消隱藏。如果我沒有記錯的話。如果您從頁面上的多個顏色盒獲得奇怪的結果,則可能需要清除顏色框代碼。

你可以使用:

$.colorbox.remove() 

這將真正清楚您的文檔的顏色框代碼的所有痕跡。有更多優雅的方法來處理這個問題,比如使用onClosed回調函數。

雖然,正如我之前所說,我不太瞭解你的問題,所以這可能對你沒什麼興趣。祝你好運都一樣:)

+0

謝謝。對不起,也許我的問題還不夠清楚。簡短並希望清楚:我使用一個回調函數來處理兩個不同的colorbox調用,只需使用該函數的「autoprint」true或false來區分效果。當我點擊第二個電話時,我們會說「autoprint == true」,另一個也是如此,無論它是「autoprint == false」。就這樣。 我知道remove()的東西,但是我必須重新初始化其他資源的colorbox。我想我只需要做兩個不同的功能,它不那麼漂亮,但它會起作用。 – Thomas

+0

啊,是的,好吧,JavaScript通常會比我們希望的要少一些。我發現我完全錯過了你的問題^^今天早上我在js上遇到了一個真實和錯誤的問題,我的ifs和其他東西似乎都不起作用。我用if(data === true){...} else {...}。使用三重等式('===')檢查值是相同的值和相同的類型。我不喜歡javascript,我很害怕,當事情奏效時我很滿意^^但很高興看到你找到了你的解決方案,擁有一個好的解決方案 – Hazza