jQueryで要素タイプを取得する


308

jQueryを使用して、jQueryで要素のタイプを見つけることは可能ですか?たとえば、要素はdiv、span、select、またはinputですか?

たとえば、jQueryを使用してドロップダウンリストに値をロードしようとしているが、同じスクリプトでラジオボタンのセットにコードを生成できる場合、次のようなものを作成できますか。

$('.trigger').live('click', function () {
   var elementType = $(this).prev().attr(WHAT IS IT);
});

トリガークラスの隣にボタンがあるドロップダウンリストがある場合、ボタンを押すとelementType変数が返さselectれます。


言い換えてもらえますか?要素タイプとはどういう意味ですか?
Abdul Munim


回答:


558

要素タイプを取得するjQuery方法:

var elementType = $(this).prev().prop('nodeName');

jQueryなしで同じことをする

var elementType = this.previousSibling.nodeName;

特定の要素タイプを確認する:

var is_element_input = $(this).prev().is("input"); //true or false

16
.prop()関数はjQuery 1.6でのみ追加されたことを思い出してください-使用しているバージョンをアップグレードする必要があるかもしれません!
xgretsch 2013

古いjQuery 1.3.2では動作しなかったため、最新にアップグレードして問題なく動作しました。
Damodar Bashyal 2014年

2
これは、ここで説明するように、「tagName」を「nodeName」に切り替えることで改善できます
Kyle Stoflet、2015

1
@KyleStoflet-あなたが正しいと思われ、nodeNameより多くの種類の要素をサポートし、IE5.5のサポートはもはや問題ではないので、上記の回答でに変更tagNameしても問題はありませんnodeName。要素はどちらも問題なく機能し、後者はテキストノードや属性などでも機能します。
adeneo

3
動作しますが、問題のサンプルコードに固有のprev()で少し混乱しました。基本的に、$(this).is("input");
Fanky

56

また、あなたは使うことができます:

$("#elementId").get(0).tagName

26

tagNameプロパティとattr('type')入力を使用する必要があります


例では、このコメントをより強くします。
Justapigeon

16

Distdevが言及したように、入力タイプを区別する必要があります。つまり、

$(this).prev().prop('tagName');

は教えてくれますinputが、それはチェックボックス/テキスト/ラジオを区別しません。入力の場合は、次を使用できます

$('#elementId').attr('type');

チェックボックス/テキスト/ラジオを伝えるので、それがどのような種類のコントロールであるかがわかります。




3

tagNameではなくNodenameを使用します。

nodeNameには、tagNameのすべての機能に加えて、いくつかの機能が含まれています。したがって、nodeNameは常により良い選択です。

DOM Coreを参照

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.