2013-08-05 53 views
1

我正在使用超薄機箱(http://www.digitalia.be/software/slimbox),這是一款非常流行的用於jQUery的輕量級擴展卡。使用.on加載超薄機箱()

我以前用過它,但是現在我有點卡住了。我有一個通過AJAX加載的表單,因此我需要使用.on()函數激活slimbox。

但我無法得到它的工作。我看了一下slimbox的代碼,它對我沒有什麼意義。我在想這:

$("#content.settings").on("click","div.scroll a.slimbox", function (e) { 
     e.preventDefault(); 
     $(this).slimbox(); 
    }); 

而且這樣的作品,但只有在點擊,由於某種原因,它需要在同一對象上兩次點擊功能。有任何想法嗎?

回答

3

問題是當元素第一次被點擊時slimbox尚未在元素上初始化,當你點擊第一次它被初始化,然後後續點擊工作正常。

一個可能的解決方案是觸發click事件一旦控件初始化周圍

$("#content.settings").on("click","div.scroll a.slimbox", function (e) { 
    var $this = $(this); 
    e.preventDefault(); 
    if(!$this.data('slimboxed')){ 
     $this.slimbox().data('slimboxed', true).click(); 
    } 
}); 
+0

嘿!這有效,但我真的不明白它在做什麼,「超薄」是什麼,它是一個類或什麼?你可以解釋嗎? – Chud37

+0

@ Chud37不,它只是一個標誌,不表示「slimbox」插件已初始化爲元素 –

2

一種方法是Ajax請求完成後再次調用該插件。因此,請在您的成功方法中加入此項

$("#content.settings div.scroll a.slimbox").slimbox(); 
+0

這是一個好主意,我認爲我在過去做過類似的事情,但由於某種原因,我無法使其工作,也不會產生錯誤。 – Chud37