1

私は.on()jQuery 1.7.2でバインドイベントのデリゲート機能を使用しています。もちろん、コンテキストはthisデリゲートされたセレクターであり、イベントがトリガーされる要素ではありません。thisクリックされている要素からアクセスする必要があります。this委任された(親)セレクターを使用して検索できることはわかっていますが、よりクリーンな方法が必要です。

$('#wrap').on('click', 'button', function(){
    console.log($(this)) //returns #wrap, not button
});

明確化

問題は、jQuery オブジェクトを 2 番目のパラメーターとして渡していたことです。例を参照してください。

http://jsfiddle.net/RobertSheaO/yVbZe/

4

1 に答える 1

2

あなたのフィドルは質問とは異なり、その違いは重要です。あなたが書いたフィドルで:

var wrap  =  jQuery('#wrap'),
    removeButton = jQuery('button');

wrap.on('click', removeButton, function(){    
    console.log(jQuery(this));
});

問題は、removeButtonその割り当てが実行されたときにボタンが存在しないため、空の jQuery コレクションであることです。

.on()動的に追加される要素に委譲する場合は、セレクター引数として文字列を指定する必要があります。

于 2013-07-19T20:49:31.580 に答える