1

ajax で「echo」PHP から html コードを取得したら、JS コードを進める必要がありますが、まったく機能せず、「echo」PHP で JS コードを送信した場合にのみ機能します

例えば:

PHPでHTMLコードを送信する場所があります

クラス「add_comment」でボタンを送信します

つまり、ページが読み込まれると、このボタンは存在しませんが、JS コードが存在します。

            $('.add_comment').click(function(){
                console.log('good');    
            })   

したがって、ボタンのみを送信するとこのコードは機能しませんが、ボタンとこのJSコードを送信するとうまく機能します...

私の問題は、JSコードをHTMLコードで送信せずにこれを解決することです。これは、実際には適切な決定ではないためです。

4

3 に答える 3

1

DOM の準備ができた後に追加された要素は動的であり、委任されたイベント ハンドラーが必要です。

$(document).on('click', '.add_comment', function(){
    console.log('good');    
});

document動的要素の最も近い非動的な親に置き換えます

于 2013-11-09T19:01:10.050 に答える
1

デリゲートを使用する必要があります。セレクター.onと合わせてご使用ください。document

$(document).on('click', '.add_comment', function(){
    console.log('good');    
});

ドキュメントから:

委任されたイベントには、後でドキュメントに追加される子孫要素からのイベントを処理できるという利点があります。委任されたイベント ハンドラーがアタッチされたときに存在することが保証されている要素を選択することで、委任されたイベントを使用して、イベント ハンドラーを頻繁にアタッチおよび削除する必要がなくなります。この要素は、Model-View-Controller デザインのビューのコンテナー要素、またはイベント ハンドラーがドキュメント内のすべてのバブリング イベントを監視する必要がある場合はドキュメントのコンテナー要素である可能性があります。document 要素は、他の HTML をロードする前にドキュメントの head で使用できるため、ドキュメントの準備が整うのを待たずに安全にイベントをアタッチできます。

于 2013-11-09T19:01:21.190 に答える
1

あなたの質問を理解したら、次のようなことを検討する必要があります。

$("body").on("click", ".add_comment", function() {
   // Your code here
});

これにより、ページの読み込み時に存在するイベント ハンドラーが body に登録され、 の CSS セレクターに一致するイベントが発生するのをリッスンします.add_comment

于 2013-11-09T19:01:25.027 に答える