我正在为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
我希望这有所帮助。