2つの.click()呼び出しを「連鎖したい」が、動作させることはできません。 ブラウザでJSコードをデバッグするとコードが機能します(遅れても動作しているようです)2回目の.click()イベントを最初に実行した後に実行します
私は何とか最初の.click()が必要です(最初のイベントがそうです)。それが完了した場合にのみ、2番目の.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();
}
});
EDIT:より多くのコード
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);
});
EDIT:それはあるとして、
$("#change_settings").click();
window.setTimeout(function() {
$("#tab_mail_header" + nr + "").click();
}, 1000);
私もそれのように本当にいけない:私は現在、このコードを持っています時間が遅れ、遅いクライアントでは1秒のタイムアウトでは不十分である場合があります。私はかかわらず、これらのようなポストのカップルを見て
...これが速く、クライアントとユーザーのためのワークフローを減速させるよう高すぎるタイムアウトを設定する必要はありません:
How to wait till click inside function?
Wait for click event to complete
誰かがこれを動作させる方法のアイデアを持っていますか?あなたが持っている場合
コードスニペット#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
});
});
はコメントして自由に感じる:私は、次の解決策になってしまった以上、いくつかの試みの後
どのように「ページを読み込みますか?」コンテンツをajax経由で読み込むことを意味しますか?次に、ajax呼び出しの成功コールバック関数で2番目のイベントをトリガーする必要があります。 – chrisbergr
ページリロードが呼び出された後、何も実行されません。それを考慮してコードを再構成します。 – Stack
新しいページに_GET変数や何かを追加する必要があります。そこで、そのパラメータを使用したいタブをクリックすることができます。 – Victor