Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在第一个事件完成后执行第二个.click()事件_Javascript_Jquery_Onclick - Fatal编程技术网

Javascript 在第一个事件完成后执行第二个.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));

我想“链接”两个.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秒钟的超时时间可能不够。我不想将超时设置得太高,因为这会减慢客户端速度更快的用户的工作流程

我看了几篇像这样的帖子:


有人知道如何让它工作吗?

经过几次尝试,我最终得到了以下解决方案:

代码片段#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
    });
});