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

标签 javascript jquery wordpress

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

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

我被锁定使用这个我真的不喜欢的插件。这是一个 Wordpress 网站,但列出即将发生的事件的插件的行为与 Wordpress 不同。它拥有这个完全独特的系统。帖子位于帖子数据库表之外,您必须以完全不同的方式查询它们。真是太糟糕了。所以我的问题是:

我们有一些 jquery 在事件列表上发挥其魔力来添加 Accordion 效果,这很有效。然而。当您单击分页链接加载下一组事件时,插件不会链接到事件的第 2 页,而是运行异步查询并将下一组事件加载到现有页面,而无需重新加载页面。如果您单击其中一个新事件, Accordion 将不再工作。

认为发生的情况是,单击时,插件会删除包含事件的整个 UL,并加载第二个全新的 UL,其中包含第二个记录集,具有相同的类名,但由于 JavaScript 在第一个 UL(插件删除的那个 UL)上初始化,因此新集并未受到影响,因为页面没有重新加载并再次运行 JavaScript。

我尝试过使用 .on() 和 Livequery 插件在您单击分页链接时重新运行 javascript,但是当查询运行并加载新的 UL 时会出现延迟,因此我相信当您单击分页链接时 JavaScript 会再次运行单击该链接,但由于单击时尚未加载 UL,因此 jquery 无法处理任何内容。

抱歉,这太长了,但我只是想尽可能清楚。我错了吗?这简直要了我的命,我的时间不多了,我真的需要让它工作起来,这样无论页面上加载了哪一组事件, Accordion 功能都可以在其上工作。

这是初始化 Accordion 的 JavaScript:

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

这是整个 Accordion 函数的粘贴箱,因为它太长了。 http://pastebin.com/BvDseg3g

最佳答案

很简单,只需在 Ajax 完成运行后调用它即可重新初始化它。

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

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

});

关于javascript - 如何在单击事件后延迟执行 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15069508/

相关文章:

html - 使用CSS拉伸(stretch)内容以适合桌面页面

javascript - 从 plotly 的任何地方 plotly 地点击事件

javascript - 如何在自己的应用程序中显示来自 Alfresco 的文档?

javascript - 超出最大调用堆栈大小 - 方法被重复调用

javascript - 使用 wordpress 悬停时显示/隐藏图像缩略图标签

php - 单击后禁用提交按钮 jQuery/PHP

JavaScript/Jquery : How do i alert labels text that contains my search?

javascript - 识别没有 ID 或特定属性的对象

javascript - 如何将 ID 添加到被选中的 select > option 元素

javascript - 将数据解析为整数