1

動的に追加されたリンクにクリックハンドラーを追加する必要があります。JQueryのクリックメソッドは動的に作成された要素では機能しないことを読みました(実際には機能させることができませんでした)。

私は次のコードを持っています:

$(this).find(ops.editbuttonselector).click(function(e) {

.liveメソッドは非推奨になったため、これには.onを使用する必要があります。このスレッドとjqueryの私の理解(制限されています)によると、私は次のことを行う必要があります:

selector = $(this).find(ops.editbuttonselector) 
$(document).on('click', selector, function(e) {

しかし、これも機能せず、実際には以前に機能していたもの(既存の要素)も機能しなくなりました。

誰かが私に正しい構文を教えてもらえますか?

前もって感謝します

4

2 に答える 2

3

の2番目のパラメーター.on()は、jQueryオブジェクトではなく、セレクター文字列です。

$(document).on('click', ops.editbuttonselector, function(e) {
于 2012-10-23T18:23:49.137 に答える
1

を使用してバインドするので$(this)、要素がDOMに追加された後にハンドラーを追加しようとしていると思います。その場合は、以下のように簡単に行うことができます。

//below is direct binding which is better than delegated event
$(this).find(ops.editbuttonselector).on('click', function(e) {

それ以外の場合thisは、以下の行が実行されたときにDOMに存在する親要素です。

//this is delegated event binding method
$(this).on('click', ops.editbuttonselector, function(e) {

それ以外の場合は.on、DOMまたはドキュメントオブジェクトに存在する可能性のある最も近い親に移動できます。

ドキュメントオブジェクトにバインドするタイミングと理由の詳細については、https://stackoverflow.com/a/12824698/297641をご覧ください。

于 2012-10-23T18:28:47.320 に答える