Javascript 在第一个事件完成后执行第二个.click()事件
我想“链接”两个.click()调用,但无法使其工作。 当我在我的浏览器中调试JS代码时,代码确实可以工作(因此,它似乎可以延迟工作) 我不知何故需要第一个.click()来加载页面(第一个事件就是这样做的),并且只有在完成后,我才需要第二个.click()来执行 我的代码:Javascript 在第一个事件完成后执行第二个.click()事件,javascript,jquery,onclick,Javascript,Jquery,Onclick,我想“链接”两个.click()调用,但无法使其工作。 当我在我的浏览器中调试JS代码时,代码确实可以工作(因此,它似乎可以延迟工作) 我不知何故需要第一个.click()来加载页面(第一个事件就是这样做的),并且只有在完成后,我才需要第二个.click()来执行 我的代码: $.post("settings?type=mail&nr=" + nr, function(data){ if(data != ""){ alert(unescape(data));
$.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秒钟的超时时间可能不够。我不想将超时设置得太高,因为这会减慢客户端速度更快的用户的工作流程
我看了几篇像这样的帖子:
有人知道如何让它工作吗?经过几次尝试,我最终得到了以下解决方案: 代码片段#1 代码片段#2
如果您对如何解决此问题有更好的想法,或者您有任何其他建议,请随时发表意见如何“加载页面”?您的意思是通过ajax加载内容吗?然后,您必须在ajax调用的成功回调函数中触发第二个事件。调用页面重载后,将不会执行任何操作。重新构造代码以解释这一点。您必须在新页面中通过一个_GET变量或其他内容,然后您可以在该页面中单击要使用该参数的选项卡。
$.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);
}
});
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
});
});