2009-08-28 19 views
2

特定のリンクのクリックイベントがアクティブになったときにjQueryを使用してページに新しいdivを作成したいとします。私はこの部分がうまくいくことを知っています。私が心配しているのは、新しく作成されたdivの内部がの別のリンクの場合、この新しいリンクのクリックイベントをキャプチャするためにjQueryを使用できますか?私。 javascriptは、jQueryを使用して '動的に'挿入された新しいHTML要素のクリックイベントをキャプチャできますか?そうでない場合は、どうすればこの機能を模倣できますか?jqueryを使用してボタンを使ってdivを作成し、新しいボタンのクリックイベントをキャプチャしますか?

おかげ

答えて

2

はい、「ライブ」と呼ばれる新しいjQueryのに特徴があります。必要なことに応じて、「livequery」にアクセスする必要があるかもしれません。

ライブ

http://docs.jquery.com/Events/live#typefn

livequery: http://docs.jquery.com/Plugins/livequery

幸運!

+0

はい!ありがとうございました!私は彼らがこの機能を持ってうれしいです... –

+0

あなたを大歓迎! FYI私は(ライブとは対照的に)私が必要としているもののためにライブクエリーを使用しています。私はそのプラグインをよく使うと思います。 – David

2

Davidさんの権利はとてもかっこいいです。私は頻繁に使っています。ライブを使用できないイベントがいくつかあります。そのため、完全性のために、DOMを変更する際に新しいイベントを配線することもできます。たとえば:

$("#some_link").click(function() { 
    $("great_selector").html("<a id='radtimes' href='/radtimes'>rad times</a>"); 
    $("#radtimes").click(function() { 
    alert('more rad things happened!'); 
    }); 
}); 
+0

私は "livequery"でそれらの事柄のほとんどが(実用目的のために)扱われるべきだと思うが、それはクールだ。 – David

0

私はあなたが答えを持って見るが、ここで新しいリンクを作成し、一度でそのクリックイベントに関数をバインドするいくつかのサンプルコードです。ネストされた要素に必要に応じて変更します。ここで連鎖関数呼び出しを使用するのは、文字列内のHTMLが使用されている場合に引用符で囲まれた場合の潜在的な問題を回避することです。ああ、return falseはリンクがアクティブになるのを防ぐので、クリックハンドラの終わりに持っておくとよいでしょう。

$('body').append($('<a>').attr('href', '#').text('Foo').click(function() { 
    alert('Foo!'); 
    return false; 
})); 
+0

私は彼が再帰的な追加を望んだと思うので、それは十分ではないかもしれません。 – David

関連する問題