0

これは奇妙なものです..

基本的に、ステータスを自動的に保存する 3 段階のフォームがあります。

最初の送信ボタンをクリックすると、ajax を介して 2 番目のステージが読み込まれます。

ページを更新すると、セッション データを使用して第 2 段階が再読み込みされます (ただし、ajax を介してではありません)。

フォームの第 2 段階にはボタンがあります。ユーザーがクリックすると、jquery を呼び出して警告を発したいと思います。

私のコードは次のとおりです。

    $(document).on("click","#submity",function(event){
event.preventDefault();
alert('lol');


    });

これは、最初のページの読み込み時に読み込まれた外部 js ファイルのドキュメント準備ステートメントの間に含まれます。jQuery ライブラリの後にロードされ、正しくインポートされています。

2 番目のページが ajax によって読み込まれると、ボタンをクリックしても何も起こりません。直接ロードすると、期待どおりにアラートが表示されます。私は一生うまくいかないのはなぜですか?

SO に関するその他の質問は、on() を使用した委任に関連しているようですが、私が知る限り、私はそれを正しく行っており、サイトの他の場所でも同様の設定が機能します..

何か案は?

ありがとう

4

2 に答える 2

0

おそらく、event.stopPropagation()を使用するか、falseを返すかのいずれかで、イベントのバブリングをブロックするクリックハンドラーの間documentにオブジェクトがあります。#submity

コードは次のように機能します。クリックイベントはクリックされたオブジェクト()で作成され、jQueryがイベントハンドラーを呼び出す場所#submityに到達するまでDOM階層を通過します。documentそのチェーンが途中でキャンセルされた場合、ハンドラーは呼び出されません。

おそらく、ajax呼び出し中または呼び出し後にクリックイベントハンドラーを割り当てていますか?

コードがないと、診断が難しくなります。リンクを投稿できますか?

于 2013-02-26T12:25:07.303 に答える
-1

ページにロードされた後に動的にロードされたボタンの.on()イベントをバインドするか、廃止された.live()を使用する必要があります。したがって、ajax成功コールバックでバインドするものを実行します

于 2013-02-26T12:09:55.720 に答える