将单击事件附加到按钮或链接上的类,该按钮或链接会触发 AJAX 帖子,然后延迟并继续原始操作



我正在为WordPress构建一个A/B测试插件,以便在某些登录页面上使用。

登录页面允许管理员在 A/B 测试变体上创建任意数字。

在着陆页编辑屏幕上,将有一些元字段用于存储将触发 A/B 测试变体conversion的内容。

其中一个选项将是这样的:

单击页面上具有 CSS 类名 ____ 或 CSS ID ____ 的按钮或链接。

将 CSS 类或 ID 的名称保存到着陆页元字段的位置。

在页面模板中网站的前端。 然后,我想在提供的类或ID上注入一些带有单击事件的JavaScript,然后该事件将触发一个AJAX帖子,该帖子在登录页面的此A/B测试变体上创建转换记录。

所以我的问题在我的JavaScript点击事件中,它将触发AJAX帖子。 发生这种情况后,我想继续执行具有该 ID 或类的链接或按钮应该执行的操作。

所以我认为还需要某种延迟来确保我的 AJAX 帖子有时间发布,然后继续加载页面/链接或任何操作。

如何延迟并继续将点击事件附加到的按钮点击?


$("#id_from_meta_field").on("click", function(e){
    // Prevent the button or link from triggering a form submission or loading a URL link so that the AJAX below can run  
    e.preventDefault();
    $.ajax({
        url: '/create_conversion_record_on_this_ab_test_variation',
        success: function(date) {
          // continue on loading button action or link URL
        }
    });
});

最常见的方法是使用 Ajax 的成功事件。喜欢:

$("#id_from_meta_field").on("click", function(e){
    // Prevent the button or link from triggering a.    form submission or loading a URL link so that the.    AJAX below can run  
e.preventDefault();
   DisableButton();
$.ajax({
    url: '/create_conversion_record_on_this_ab_test_variation',
    success: function(date) {
      // continue on loading button action or link
        EnableButton();
        ContinueToProcess();
    }
});
});
Function ContinueToProcess(){
    //some code here
}

我不确定是否可以处理任何类型的点击事件,但是如果您能够确保所有事件处理程序都通过jquery注册,则可以使用$._data( element, "events" ).click来获取点击处理程序的列表。这些点击处理程序可以在 ajax 完成后手动调用。以下是爆料机:

http://plnkr.co/edit/1AVM2sA1iXUrwgHPbyqs

我希望这有所帮助。

最新更新