2017-05-01 4 views
0

私は以下のコードを持っています。関数1の最後に関数2が呼び出されます。JQuery .done()の使い方

function function1() { 
    var html = ""; 
    html += '<div>'; 
    html += '<button type="button" id="button1">Click Me</button>'; 
    html += '</div>'; 

    $("#element").html(html).done(function2()); 
} 


function function2() { 
    $("#button1").prop("disabled", true); 
} 

しかし、これはうまくいかず、コンソールは$(...).html(...).done is not a functionという文句を言います。私は何をすべきか?

+0

これで何が達成されると思いますか? –

+0

@SergioTulentsev私はfunction2を使用して、function1によって作成されたボタンのいくつかを無効にしようとしていました。ここのコードは.done()の問題を表示するために単純化されています –

+0

@SergioTulentsev更新された投稿を参照してください –

答えて

2

.html()関数は同期式なので、コールバックは必要ありません。ジャスト)(.htmlのために呼び出した後、2番目の関数を呼び出す:

$("#element").html(html); 
function2(); 

これはfunction2は、新しいマークアップを持つ要素を更新した後に実行されるようになります。

+0

.html()が同期していると書かれている公式ドキュメントを教えてもらえますか? –

+0

確かに、この方法の公式文書を指し示す私の答えには既にリンクがあります。 –

+0

ありがとうございます。しかし、私は文書の意味は、.html()は同期ですか? –

0

あなたが望む結果を得る最も良い方法は、コードを次のように構造化することです。

function function1() { 
    var html = ""; 
    html += '<div>'; 
    html += '<button type="button" id="button1">Click Me</button>'; 
    html += '</div>'; 

    $("#element").html(html); 
    function2(); 
} 


function function2() { 
    $("#button1").prop("disabled", true); 
} 

function1(); 
関連する問題