2012-01-25 6 views
0

私は、テーブル1からテーブル2に値をコピーする関数を持っています。この関数は、2番目のテーブルをチェックして、コピーを実行する前に十分な行があることを確認し、十分な行がない場合は、addRows(n)で作成します。Jqueryのクリック機能がDOMに追加され、新しい挿入をバインドする方法は?

$('#copyTableValues').on('click', function() { 
    // count available rows and add more if needed 
    if(table2Rows < rowsNeeded) 
    { 
     addRows(rowsNeeded - table2Rows); 
    } 

    // copy values from table1 to table2 
    // .... 

}); 

ただし、関数はaddRowsで最後に挿入された行を認識しません。コピー機能を再度クリックすると、コピー機能が認識されます。

これは、jqueryがこの関数の.on('click')の部分でのみDOMへの変更をチェックするためです。クリック後にDOMに追加した場合に再度確認する方法はありますか?

+1

table2の既存の行の数を数えるコードを投稿します。 – RoccoC5

答えて

0

はい、階層内で少し上に移動する必要があります。

試してみてください。

$('body').on('click', '#copyTableValues', function() { 

}); 

これは'#copyTableValues'の任意の追加のための'body'を見て、そして同様にそれらにイベントを適用します。スクリプトがそれらの行に当たったときに既にDOMにロードされている部分だけを扱う方法です。

+0

あなたのコードが正しい間、あなたの説明は少しオフです。この場合、 '$ .on()'は動的に作成されない ''に束縛され、 ''の子の_bubble up_を監視します。 IDフィルタは、関連するバブリングされたイベントと照合されます。 – Bojangles

+0

@JamWaffles私は漠然としていました。この単純なレベルのコンセプトを理解していない多くの人々は、バブルを捉えるのにずっと時間がかかりました。 – Relic

+0

ありがとうございます。トリガーを使って解決しました。 '$( '#table2')。trigger( 'additionComplete')'を 'addRows()'の最後に追加しました。私はコピー関数の先頭に '$( '#table2')を置いていました。( 'additionComplete'、function(){' –

関連する問題