47

に配置されているページに2つのaspラジオボタンがありますupdatepanel。私は次のようにjQueryを使用してクリックイベントを作成しました。

$(document).ready(function () {
    $(".inputs").click(function () {
         alert($(this).id);
    });
});

ただし、Undefinedを返します。何が問題ですか?

EDIT:

        alert(" or " + $(this).attr("id"));
alert(this.id);

これらの2行は戻りnullます!

4

8 に答える 8

126

$(this)同じでthisはありません。1 つ目は、要素にラップされた jQuery オブジェクトを表します。2番目はあなたの要素です。idプロパティは要素に存在しますが、jQuery オブジェクトには存在しません。そのため、いくつかのオプションがあります。

  1. 要素のプロパティに直接アクセスします。

    this.id

  2. jQuery オブジェクトからアクセスします。

    $(this).attr("id")

  3. jQuery からオブジェクトを引き出します。

    $(this).get(0).id; // Or $(this)[0].id

  4. オブジェクトidから を取得します。event

    クリックイベントなどのイベントが発生すると、重要な情報と参照が一緒に運ばれます。上記のコードには、クリック イベントがあります。このイベント オブジェクトには、 と の 2 つの項目への参照がcurrentTargetありtargetます。

    を使用すると、イベントを発生させた要素の をtarget取得できます。イベントが現在バブリングしている要素を示すだけです。これらは常に同じではありません。idcurrentTarget

    $("#button").on("click", function(e){ console.log( e.target.id ) });

これらすべての中で、thisネストされた一連のイベントに関与していない限り、それ自体から直接アクセスするのが最善のオプションです。ネストさeventれた各イベントのオブジェクトを使用して (すべてに一意の名前を付けます)、より高いスコープまたはより低いスコープの要素を参照します。

于 2012-05-14T06:51:50.663 に答える
45

別のオプション (見たことがあるように):

$(function () {
    $(".inputs").click(function (e) {
         alert(e.target.id);
    });
});
于 2012-05-14T06:53:57.700 に答える
9

Hiyaデモ http://jsfiddle.net/LYTbc/

これは DOM 要素への参照であるため、直接ラップできます。

attrAPI: http://api.jquery.com/attr/

.attr() メソッドは、一致したセットの最初の要素のみの属性値を取得します。

良いものを、乾杯!

コード

$(document).ready(function () {
    $(".inputs").click(function () {
        alert(this.id);
        
        alert(" or " + $(this).attr("id"));
    });
});​
于 2012-05-14T06:50:11.367 に答える
4

$(this)DOM 要素をラップする jQuery オブジェクトであり、jQuery オブジェクトにはプロパティthisがありません。おそらく、クリックされた要素の属性を取得しidたいだけでしょう。this.idid

于 2012-05-14T06:48:55.313 に答える
3

このアクションを使用

$(document).ready(function () {
var a = this.id;

alert (a);
});
于 2013-12-23T01:42:04.840 に答える
1

this : DOM 要素です $(this) : Dom 要素でラップされた Jquery オブジェクトです。この回答も this vs $(this) で確認できます

この Attr()のようにしてみてください。一致した要素のセットの最初の要素の属性の値を取得します。

$(document).ready(function () {
    $(".inputs").click(function () {
         alert(" or " + $(this).attr("id"));

    });
});
于 2012-05-14T06:50:29.590 に答える
0

要素の.attr('id')を取得するために使用できます。id

$(".fichier").bind('click', function(){      
     alert($(this).attr('id'));
});
于 2021-10-15T11:05:17.153 に答える