1

私の問題...すべてのキーダウンイベントを発生させることができないようです。

[enter] および [esc] キーダウン イベントを使用して、一部の html テーブルのデータを更新/更新または終了/更新しています

ユーザーの検索語入力に基づいて入力される、静的なテーブル セルと動的なテーブル セルがあります。

動的テーブルは $.each ループから取得されますが、div 構造はまったく同じです (そして div id は一意です)。どちらの場合も、結果のテーブル セルは...

<td class="edit"><div contenteditable="true" id="XYZ">[value]</div></td>

キーダウン機能はまったく同じです....

$(document).ready(function() {

    $("#divA").keydown(function (e) { 
    if (e.keyCode == 13) {
        e.preventDefault();
        // send data to server          
        // refresh stuff
    } 
    if (e.keyCode == 27) {
        // refresh stuff
    }       
    });

    $("#divB").keydown(function (e) { 
    if (e.keyCode == 13) {
        e.preventDefault();
        // send data to server
        // refresh stuff        
    } 
    if (e.keyCode == 27) {
        // refresh stuff
    }       
    });

サーバーに日付を投稿する別の関数は同じです。データベースを更新するphpも同じです。両方とも同じ mysql データ構造を持っていますdouble, yes null, zero default。divB にはデータが含まれておりalert($("#divB").text());、ajax 更新で使用される値を示しています。

しかし、問題をここに絞り込んだので、それは問題ではないと思います...

divA では、keydown は [enter] 改行を停止し、コードを実行します

divB では、keydown は [enter] 改行を停止せず、コードは実行されません

唯一の違いは、divA が静的で、divB が JavaScript で生成されることです。divB キーダウン関数を実行するにはどうすればよいですか?

4

1 に答える 1

3

keydown 一部のdivは動的であるため、イベントをそれらにバインドするために使用することはできません。このメソッドは、ページが読み込まれたときにのみ既存のdivにバインドされます。

必要なのは、jquery.on()またはjquery.live( )を使用することです(onは新しいので、jqueryバージョンがサポートしている場合は、それを使用することをお勧めします)。

于 2012-07-22T09:21:53.533 に答える