0

新しいページをロードする id = new のボタンがあります

$("#new").click(function(){
$('#message_area').load('new.php');
});

new.php には、メッセージをデータベースに送信するボタンがあります。しかし、私はそれに問題があります.ajaxを介して他のリンクに移動し、上記のコードを使用してnew.phpを再度ロードし、new.phpの送信ボタンが機能しない場合、ページがロードされたときに初めて機能しますページ、それは動作します。初めてDOMを作成した後に、new.phpの送信ボタンが追加されたためだと思います。助けてください事前に感謝..

4

4 に答える 4

3

より正確な回答を得るには、マークアップの詳細を投稿する必要がありますが、一般的な考え方は、イベントの委任を使用することです。イベントハンドラーを、DOMから削除されないボタンの祖先にバインドします。例えば:

$("#message_area").on("click", "#yourButton", function() {
    //Do stuff
});

これが機能するのは、DOMイベントが、すべての要素の祖先を介してツリーをバブルアップするためです。ここでは、ツリーの上位にあるイベントをキャプチャし、それが関心のあるものから発生したかどうかを確認しているだけです(#yourButton)。

詳細については、jQuery.onを参照してください。1.7より前のバージョンのjQueryを使用している場合は、delegate代わりに使用する必要があることに注意してください。

于 2012-04-24T16:01:53.040 に答える
1
//jquery >= v1.7
$("body").on('click', '#new', function(){
    $('#message_area').load('new.php');
});

//jquery < v1.7
$("#new").live('click',function(){
    $('#message_area').load('new.php');
});
于 2012-04-24T16:01:44.243 に答える
0
$("#new").live("click", function(){
$('#message_area').load('new.php');
});

これは非推奨であることに気づきました-代わりにonを使用する必要があります..私の悪い。

于 2012-04-24T16:01:58.783 に答える
0

このように動的に作成された要素を管理するには、.on() (jQuery 1.7 以降) または.delegate() (jQuery 1.4.3 以降) を使用してイベントを割り当てる必要があります。誰もが私をコードに打ち負かしたようですが、関数へのリンクのためにこれを投稿します。

于 2012-04-24T16:04:29.197 に答える