2011-06-14 15 views
27

jQueryを起動した要素のidをどうすれば得ることができますか?.change()? 関数自体は正常に動作しますが、id="next"のセレクタに対して特定のアクションが必要です。

$("select").change(function() { 
    [...snip....] 
    alert($(this).attr('id')); // <---- not working 
} 

上記の警告が機能しない理由はありますか?

+0

... http://jsfiddle.net/interdream/nGtjR/1/ –

+0

あなたの変更ハンドラが接続されている選択要素のidを取得しようとしていますか? – kinakuta

答えて

57

は、イベントがフックされたDOM要素です。 this.idがそのIDです。それを取得するためにjQueryインスタンスにラップする必要はありません。idプロパティは、すべてのブラウザで確実にその属性を反映します。

$("select").change(function() {  
    alert("Changed: " + this.id); 
} 

Live example

あなたのコードサンプルでこれをやっていないが、あなたはあなたのコンテナのIDを与えるいくつかのフォーム要素を持つコンテナを見ていた場合。

$("#container").change(function(event) { 
    alert("Field " + event.target.id + " changed"); 
}); 

Live example

(jQueryのも、それはdoesnのIE上で、changeイベントが泡ことを保証します:あなたがイベントをトリガー要素のIDが必要な場合は、event object'stargetからプロパティことを得ることができます

+1

'.id'はそれが信頼できると思いますか? – ajax333221

+1

@ ajax333221:別の方法で考える理由がありますか?私はInternet Explorer5.5以降、Chrome、Firefoxを始めてから、Netscape Navigator、Opera、Safari、Konqueror、Midoriなどを始めて使用しています。これはhttp://www.w3です。 .org/TR/DOM-Level-2-HTML/html.html#ID-63534901)がDOM2 HTMLにありますが、これは[非常に早いバージョン](http://www.w3.org/TR/1999/CR- DOM-Level-2-19991210/html.html#ID-63534901)を作成します。私はあなたが一般的な(あるいはおそらく限定された)ブラウザで、要素に 'id'を反映しない使い方を見つけられないと言いたいと思いますが、私はあなたのコメントの起源に興味があります。 :-) –

+0

@Tまあ、これは数時間、これについての参考文献を探していたのですが、あなたの投稿は私が見つけた最高でしたが、依然として私は参考文献をいくつか確認したかったのです:-J – ajax333221

5

idが "next"のselect要素では、特定のスクリプトを実行する必要がありますか?それは私に働くように見えます

$("#next").change(function(){ 
    //enter code here 
});