2013-02-25 84 views
2

程序!我找到了類似問題的解決方案,比如我的網站,但是發生在我身上的事情非常不尋常,我不認爲它們適用。如何在點擊事件後延遲執行javascript?

在此頁面:http://tdg.gswitchhost.com/calendar/

我被鎖到使用這個插件,我真的不喜歡。這是一個WordPress的網站,但插件,列出即將到來的事件,並不像WordPress的行爲。它具有完全獨一無二的系統。帖子不在帖子數據庫表格之外,你必須以完全不同的方式查詢這些帖子。這是一個無賴。所以我的問題:

我們有一些jquery在事件列表中使用它的魔術來添加手風琴效果,並且這可以工作。然而。當你點擊分頁鏈接加載下一組事件時,插件不是鏈接到事件頁面2,而是運行異步查詢,並將下一組事件加載到現有頁面上,而無需重新加載頁面。如果您點擊其中一個新事件,手風琴不再有效。

認爲的情況是,在點擊,插件刪除整個UL其中包含的事件和加載第二個全新的,其中,包含第二個記錄集,具備相同的類名,但由於javascript的初始化在第一個UL上,刪除了一個插件,新的集合沒有受到影響,因爲頁面沒有重新加載並再次運行JavaScript。

我試過使用.on()和Livequery插件重新運行JavaScript時,當您單擊分頁鏈接,但有一個延遲,因爲查詢運行和加載新的UL,所以我相信,JavaScript再次運行時你點擊鏈接,但是因爲UL點擊時尚未加載UL,所以jquery沒有任何工作要做。

對不起,這是如此之久,但我只是想盡可能清楚。我錯了嗎?這讓我失望了,我沒時間了,我真的需要讓這個工作起作用,這樣無論頁面上加載了哪一組事件,手風琴功能都可以處理它。

下面是初始化手風琴的JavaScript:

$('.eventListingNew').accordion({ 
    headerClassName: 'accordionHeader', 
    headerActiveClassName: 'accordionHeader-active', 
    contentClassName: 'accordionContent', 
    collapseAll: false, 
    speed: 250 
}); 

而這裏的整個手風琴功能的引擎收錄,因爲它是如此漫長。 http://pastebin.com/BvDseg3g

+0

坎迪亞可以告訴你有點嚇壞了!對,總結一句你想讓我們解決的問題?你想延遲執行一段時間嗎?這就是問題標題所暗示的。 – christopher 2013-02-25 14:42:52

+0

對不起,它太冗長了,如果不清楚,延遲執行是一個變量,所以它不像我可以硬編碼像.delay(300)延遲。我想我正在尋找的是JavaScript檢測新UL何時加載並然後運行手風琴功能的方法。你甚至可以這樣做嗎? – 2013-02-25 14:47:36

+0

epascarello的答案更有意義:) – christopher 2013-02-25 14:50:46

回答

2

簡單的事情就是在Ajax完成運行並重新初始化時調用它。

$(document).ajaxComplete(function(event, xhr, settings) { 

    $('.eventListingNew').accordion({ 
     headerClassName: 'accordionHeader', 
     headerActiveClassName: 'accordionHeader-active', 
     contentClassName: 'accordionContent', 
     collapseAll: false, 
     speed: 250 
    }); 

}); 
+0

這工作。直到今天,我從來沒有聽說過ajaxComplete()。謝謝你的幫助。 – 2013-02-25 18:52:24