0

jQuery プラグイン dForm を使用して、フォーム フィールドを動的に生成します。

イベントの場合、これらのフィールドにアクセスできることを知っています

$(document).on("click","#id", function(){});

しかし、私がしたい場合は、言う

$("#id").after("<div></div>");

では、どうすればいいですか?私はもう試した

$("#id").after("<div></div>").trigger("create");

私はそれが何をするのか本当に理解していませんが、役に立ちません。

ありがとう。

4

3 に答える 3

1

これは、イベントに応答しているため機能します。

$(document).on('click', '#id', function(){});

その理由は、イベントが特定の要素から親ドキュメント/ウィンドウまで、DOM 構造全体を横断するためです。したがって、この場合、jQuery はイベント リスナーを要素ではなく に割り当て、documentセレクターでイベントをフィルター処理します。そのため、要素が事後に動的に追加されたとしても、イベントを まで渡すため、引き続き捕捉されdocumentます。

ただし、これはイベントに応答していません。

$('#id').after('<div></div>');

これは、要素を選択し、アクションを実行するだけで完了です。したがって、その要素が DOM 上にない場合、そのアクションは実行されません。

これを回避する方法は本当にありません。$('#id')everyに a を追加したい場合は'<div></div>'、要素を削除してid再度追加するたびに、そのコード行を再度呼び出す必要があります。

于 2013-09-23T19:13:53.413 に答える
1

イベント代表団が実際に行っていることについては、多少の混乱があると思います。使用して.on()いる理由は、イベント ハンドラーが DOM の準備が整った状態で処理されているが、動的要素が存在しないためです。動的コンテンツに追加する場合、イベントの委任は必要ありません。これは、appendコマンドを実行するときに、ページ上に存在する要素をターゲットにする必要があるためです。

したがって、 の ID で div を動的に作成するとしますtest$("#test").append("<span>see, new span</span>");このコマンドを実行するまでに要素が存在するため、単純な を使用してこの div に追加できます。これが役立つことを願っています。

于 2013-09-23T19:13:28.490 に答える