在第一个事件完成后执行第二个.click()事件
Execute a second .click() event after the first is done
我想"链"两个。click()调用,但不能让它工作。当我在浏览器中调试JS代码时,代码确实工作(因此有延迟,似乎可以工作)
我不知何故需要第一个。click()来加载页面(这是第一个事件所做的),只有在完成后,我才希望第二个。click()执行。
我代码:$.post("settings?type=mail&nr=" + nr, function(data){
if(data != ""){
alert(unescape(data));
// First click event -> realoads the page
$("#change_settings").click();
// Second click event -> navigates to a tab
// inside the page loaded by the first click event
$("#tab_mail_header" + nr + "").click();
}
});
编辑:更多代码
function load_change_settings_view(e){
e.preventDefault();
$("#content").empty();
// load settings.jsp in a div (test) inside the mainpage
$("#content").load("settings.jsp #test", function(){
// In here are a couple of .click() & .submit() functions but nothing else
});
});
$("#change_settings").click(function(e){
load_change_settings_view(e);
});
编辑:我现在有这个代码:
$("#change_settings").click();
window.setTimeout(function () {
$("#tab_mail_header" + nr + "").click();
}, 1000);
我真的不喜欢它,虽然,因为它是一个定时延迟,它可能是情况(在一个缓慢的客户端),1秒的超时将不够。我不想把超时设置得太高,因为这会减慢用户的工作流程与更快的客户端…
我看了几个这样的帖子:
JQuery .done on a click event
等待用户事件
如何等到点击里面的功能?
等待点击事件完成
有没有人知道如何让这个工作?
经过几次尝试,我最终得到了以下解决方案:
代码片段# 1
$.post("settings?type=mail&nr=" + nr, function(data){
if(data != ""){
alert(unescape(data));
// create event object
var evt = document.createEvent('MouseEvents');
evt.initEvent('click', true, false);
// call method manually (not called by actual button click like its supposed to be)
// - pass event object
// - additional parameter to specify the tab the user is viewing
load_change_settings_view(evt, "tab_mail_header" + nr);
}
});
代码片段# 2
function load_change_settings_view(e, p_tab){
e.preventDefault();
$("#content").empty();
// load settings.jsp in a div (test) inside the mainpage
$("#content").load("settings.jsp #test", function(){
// Go to previous tab (if one was selected)
var prev_tab = p_tab;
if(typeof prev_tab != 'undefined'){
$("#" + prev_tab).click();
}
// In here are a couple of .click() & .submit() functions but nothing else
});
});
如果你对如何解决这个问题有更好的想法,或者如果你有任何其他建议,请随时发表评论
相关文章:
- 关闭第二个事件源上的第一个事件源's onopen方法
- 第二个事件[onClick]不起作用
- 第一个jquery事件正在发生,但没有发生第二个事件
- Vanilla Js:在一个事件中开始一段时间的循环,然后用第二个事件打破它?('mouseover'启
- jQuery函数:为什么第一个事件的完成延迟到第二个事件完成
- socket.io 中的第二个 io.connection() 不会触发连接事件
- 单用户操作触发两个事件-第二个事件不触发't触发器
- 单击角度表元素上的事件,将其定向到由所选元素的 ID 组成的第二个 URL
- 第二个道场 筛选选择控件 onChange 事件不会被触发
- 下拉列表更改事件直到第二个实例才触发
- jQuery脚本仅在第二个事件上执行
- 引导选项卡显示事件仅在第一次触发,而不会在第二个或以后的选项卡开关上触发
- 点击事件只适用于第二个帖子
- Return false对第二个onclick切换事件无效
- Jquery pageX和screenX在第二个监视器上的事件为负数
- 第一个下拉隐藏在第二个下拉点击事件上
- javascript:注册第二个事件侦听器.如何防止某些事件发生
- HIghcharts,在 Point.select 事件中选择第二个点
- 创建触发第二个事件的事件
- jQuery在第二个悬停事件