2012-05-14 22 views
22

updatepanelに置かれているページに2つのaspラジオボタンがあります。私はこのようなjQueryを使ってクリックイベントを書いた:

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

しかし、それは未定義を返します。何が問題ですか?

EDIT: 

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

これらの2行は、nullを返します。

+1

(にconsole.logを使用)。それはずっと簡単だろう。あなたの例では、以下を使用できます:console.log(this); – Min2liz

答えて

25

(あなたがそれを見てきただけに)別のオプション:

$(function() { 
    $(".inputs").click(function (e) { 
     alert(e.target.id); 
    }); 
}); 

HTH。

4

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

6

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

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

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

.ATTR()メソッドは、マッチしたセット内の最初の要素の属性値を取得します。

いいね、歓声があります!

コード

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

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

    }); 

});

1

この:DOM要素は $(この)である:DOM要素で包まれたjQueryのobjctは、あなたもこの答えを確認することができますthis vs $(this)

お試しくださいAttr()。一致する要素のセットの最初の要素の属性の値を取得します。

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

    }); 
}); 
87

$(this)thisは同じではありません。最初は、要素の周りにラップされたjQueryオブジェクトを表します。 2番目はあなたの要素です。 idプロパティは要素に存在しますが、jQueryオブジェクトには存在しません。

  1. アクセス直接要素のプロパティ:

    $(this).attr("id")

  2. :jQueryオブジェクトから

    this.id

  3. アクセス、それをそのように、あなたはいくつかのオプションを持っています

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

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

  4. eventオブジェクトからidを取得:イベントが発生している場合

    、例えばクリックイベントのために、彼らは彼らとの重要な情報と参考文献の周りを運びます。上のコードでは、クリックイベントが発生しています。このイベントオブジェクトには、currentTargettargetの2つの項目が参照されています。

    targetを使用すると、イベントを発生させた要素のidを取得できます。 currentTargetは、イベントが現在バブリングしている要素を単に伝えます。これらは必ずしも同じではありません。これらのすべての

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

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

+6

明らかに、私が "$(this).id in jquery"をGoogleで検索したときに、これがナンバーワンの検索結果であったという十分に一般的な質問です。あなたの答えは正しかったし、私を助けました。私は.attr()メソッドを使い、魅力的に機能しました。ありがとう! – hardba11

+3

これは正解ではないのはなぜですか? – Pier

+0

@Pier確かにこれは最高の答えですが、正しいものはありません。 – yeyo

2

使用このactiion常に

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

alert (a); 
}); 
関連する問題