3

イメージに onClick イベントがあり、新しいタブが jQuery タブに追加されます。その横のイベントは、この新しいタブにコンテンツを追加します。

$('#Image').click();
$('#controladdedbyclickabove').append( message);

私が見ている問題は、クリックイベントがアクションが完了するのを待たず、次のステートメントに進むことです。このため、クリックによって生成された新しいコントロールにコンテンツが追加されているのを確認できません。次のステートメントに移動する前にアクションが完了するまでクリック イベントを待機させるにはどうすればよいですか?

#image の onClick アクションには、文字列として抽出できるすべてのパラメーターがあるため、クリックのトリガーに依存する必要がありますが、実行方法がわかりません。

onClick イベントが発生すると、次のメソッドが呼び出されます。

function addTab(title, uri, userid) {
    var newTab = $("#tabs").tabs("add", uri, title);
}
4

4 に答える 4

5

コールバック関数を使用できます:

 if($('#Image')) {
  $('#Image').click(function() {
        $('#controladdedbyclickabove').append( message);
  });
}else {
  console.log('image object not there');
}
于 2012-12-25T04:01:11.690 に答える
4

関数を終了してブラウザーに制御を戻すまでイベントは処理されないため、イベントが処理されるのを待つことはできません。

イベントが処理された後にコードを実行するには、関数を終了した後にコードを開始する必要があります。

$('#Image').click();
window.setTimeout(function(){
  $('#controladdedbyclickabove').append( message);
}, 0);
于 2012-12-25T03:51:20.200 に答える
2

それを行うには多くの方法があります.クリックが終了したときに何かを実行したい.

1: コードをこのようにしない理由

function addTab(title, uri, userid) {
   var newTab = $("#tabs").tabs("add", uri, title);
   $('#controladdedbyclickabove').append( message);
}

2: このような関数を定義することもできます

function addTabCallback () {
  $('#controladdedbyclickabove').append( message);
}

function addTab(title, uri, userid) {
   var newTab = $("#tabs").tabs("add", uri, title);
   addTabCallback();
}

3: オブザーバー パターンを使用できます

function addTab(title, uri, userid) {
   var newTab = $("#tabs").tabs("add", uri, title);
   var observer = addTab.observers.shift();
   while (observer) {
      observer();
      observer = addTab.observers.shift();
   }
}
addTab.observers = [];

クリックをトリガーしたときに少し変更する必要があります

addTab.observers.push(function () {
   // codes here will be executed when the click finished
   $('#controladdedbyclickabove').append( message);
});

$('#Image').click();

これはオブザーバー パターンを使用したサンプル コードです。実際には、オブザーバー タイプ チェックなどを行う必要があります。

于 2012-12-25T06:17:20.830 に答える
1

私は最終的に、Ajaxが呼び出すサーバーに追加メッセージを渡しました。そのため、クリックイベントが呼び出されると、コントロールが戻ってきたときにメッセージがコントロールに追加されます。javascript コールバックを期待どおりに動作させることができませんでした。

于 2012-12-25T19:33:32.213 に答える