如何在点击事件后延迟执行javascript?

时间:2013-02-25 14:40:10

标签: javascript jquery wordpress

程序!我已经找到了类似问题的解决方案,例如我在网站上发生的事情,但发生在我身上的事情是相当不寻常的,我不认为它们适用。

在此页面上:http://tdg.gswitchhost.com/calendar/

我被锁定使用这个我真的不在乎的插件。这是一个Wordpress网站,但列出即将发生的事件的插件并不像Wordpress那样。它有这个系统,它是完全独特的。帖子位于posts数据库表之外,你必须以完全不同的方式查询这些帖子。这真是太糟糕了。所以我的问题是:

我们有一些jquery在事件列表上发挥作用,以增加手风琴效果,这是有效的。然而。当您单击分页链接以加载下一组事件(插件)而不是链接到事件的第2页时,它会运行异步查询并将下一组事件加载到现有页面而不重新加载页面。如果您点击其中一个新事件,手风琴将不再有效。

认为正在发生的事情是,点击后,该插件将删除包含事件的整个UL,并加载第二个全新的UL,包含第二个记录集,具有相同的类名但由于javascript在第一个UL上初始化,插件删除了,因为页面没有重新加载并再次运行javascript,新的集合没有受到影响。

我尝试使用.on()和Livequery插件在你点击分页链接时重新运行javascript,但是当查询正在运行并加载新的UL时出现延迟,所以我相信当你运行时javascript会再次运行点击链接,但由于点击时尚未加载UL,因此jquery无需处理。

对不起,这太长了,但我只想尽可能清楚。我错了吗?这让我很难过,我已经没时间了,我真的需要让它工作,这样无论在页面上加载了哪些事件,手风琴功能都可以使用它。

这是初始化手风琴的javascript:

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

这是一个整个手风琴功能的粘贴盒,因为它太长了。 http://pastebin.com/BvDseg3g

1 个答案:

答案 0 :(得分:2)

简单的事情就是在完成Ajax完成运行以重新初始化它时调用它。

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

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

});