0

動的に追加された要素にイベント ハンドラーを追加したいと考えています。問題を以下の基本的なコードに単純化しました。私は新しい JQuery 1.7 on 機能を使用して、「CancelSurvey id 要素のすべてのラベルがクリックされたときに、この通知関数を呼び出します」と言います。

function notify(event) {
    console.log(event.data.name);
}
$('#CancelSurvey').on('click', 'label', { name: $(this).attr("id") }, notify);

ラベルのIDをパラメータ「name」として渡したいです。これを警告しようとすると、未定義です(作成されたhtmlで定義されています)。この場合、 $(this) を使用してもラベルセレクターを参照していないと思います。実際にはドキュメント自体を参照しているようです。これを達成する方法についてのアイデアはありますか?

4

2 に答える 2

2

thisこれは、ハンドラーが割り当てられている囲んでいるコンテキストを評価しているためです。したがって、要素への参照ではありません。

ID はわかっているので、文字列を使用できます。

$('#CancelSurvey').on('click', 'label', { name: 'CancelSurvey' }, notify);

または、イベント データをスキップして、ハンドラ内の要素から取得するだけです

function notify(event) {
    console.log(this.id);
}
于 2012-04-12T17:25:26.123 に答える
0

イベントをトリガーした DOM 要素はクリック ハンドラーに渡す必要があります。イベント ハンドラーでそのように ID を取得できます。thisハンドラーで、イベントをトリガーしたDOM要素を指していると確信しています。

于 2012-04-12T17:26:00.897 に答える