2012-03-31 104 views
0

首先,我使用的jQuery colorbox插件目前工作良好,但後來我想使用按鈕關閉colorbox。不幸的是,我不能僅僅通過使用jQuery選擇它的ID來觸發該按鈕上的點擊事件,而不是按鈕必須調用一個名爲closepan()的javascript函數(這種行爲不幸對我而言是強制性的)。如何創建一個關閉jQuery colorbox的全局函數?

我試圖創建函數

closepan() { 
$.colorbox.close(); 
} 

第一種情況:在

$(document).ready(function(){...}); 

內,但後來我得到了錯誤closepan是不確定的。

第二種情況:前

$(document).ready(function(){...}); 

但隨後它是不確定的顏色框方法!

我放棄了幾個小時的擺弄幾個解決方案後,我已經找到所有圍繞這個主題stackoverflow.com!我無法弄清楚如何使這個工作!

換句話說,如何創建一個名爲closepan()的函數來執行$ .colorbox.close();而我的按鈕在全球範圍內可用?

回答

2

在其中創建,如果你的變量或函數不管在window上創建它將在全球範圍內提供。

window.closepan = function() { 
    // hello there 
} 
+0

Yessss非常感謝。它通過使用你的建議在jQuery文檔中創建函數完美地工作。 – Sidou 2012-03-31 01:22:18

+0

我在一個月前瞭解到'window.'技巧。在jQuery'.ready'內部和外部工作時超級棒。 – iambriansreed 2012-03-31 01:30:41

+0

@sidou您可能需要閱讀[JavaScript中的可變範圍](http://stackoverflow.com/a/500459/156755)。沒有實際的需要在'document.ready'中創建它,如果不是,你的代碼通常更乾淨,更易於維護。 – Basic 2012-03-31 01:30:43

0
function closepan() { 
    if($.colorbox) { 
     $.colorbox.close(); 
    } 
} 

但是,如果有人點擊您的按鈕,所有的外部腳本應該已經被加載,使檢查不應該是必要的點...

+0

這是行不通的,因爲無論我們的jQuery之外創建這個功能文檔準備就緒,然後$ .colorbox.close()不被識別,或者我們在jQuery文檔準備好內部創建它,然後該函數不可用於我的按鈕! – Sidou 2012-03-31 01:18:01

+0

要定義一個函數,在函數內部調用的東西還沒有被聲明。除此之外,在dom-ready事件函數外還可以使用'$',因此'$ .colorbox'也是可用的。 – ThiefMaster 2012-03-31 01:19:14

0

不要忘了把關鍵字function在聲明的前...

function closepan() { 
    $.colorbox.close(); 
} 

工作JSFiddle

+0

不,你不明白。首先,正如我已經說過的,我不能使用click事件,因爲我需要使用按鈕調用的closepan()函數(如'javascript:closepan()')。其次,你需要知道這個函數的唯一目的是使用colorbox close調用和colorbox這是一個jQuery插件,需要在jQuery環境中工作才能被正確觸發,所以它不像提醒'hello world'那樣沒有'不需要任何jQuery先決條件來運行。 – Sidou 2012-03-31 01:56:28

+0

'$'jQuery變量的範圍是全局的 - 你可以在頁面的任何地方引用它。我沒有讀過需求:函數,但認爲這是問題的方法的定義。我已經更新了JSLint,以您定義的方式調用函數,並演示如何直接引用jQuery或使用在document.ready()中設置的變量 - 雖然在後一種情況下,您會更好選擇關聯答案中提到的關閉。沒有實施面板,我可以得到儘可能的接近 – Basic 2012-03-31 07:29:57

相關問題