特定の JavaScript オブジェクトが DOM 要素であるかどうかを検出する最良の方法は何ですか?[重複]

StackOverflow https://stackoverflow.com/questions/120262

  •  02-07-2019
  •  | 
  •  

質問

たとえば、複数の引数の型を受け入れるように設計された関数を書いていたとします。

var overloaded = function (arg) {
    if (is_dom_element(arg)) {
        // Code for DOM Element argument...
    }
};

実装する最良の方法は何ですか is_dom_element クロスブラウザでかなり正確に動作するようにするには?

役に立ちましたか?

解決

jQuery は、nodeType プロパティをチェックします。したがって、次のようになります。

var overloaded = function (arg) {
    if (arg.nodeType) {
        // Code for DOM Element argument...
    }
};

ただし、これにより要素だけでなくすべての DOM オブジェクトが検出されます。要素だけが必要な場合は、次のようになります。

var overloaded = function (arg) {
    if (arg.nodeType && arg.nodeType == 1) {
        // Code for DOM Element argument...
    }
};

他のヒント

おそらくこれはここにあります:

node instanceof HTMLElement

これはほとんどのブラウザで動作するはずです。それ以外の場合は、ダックタイプする必要があります (例: typeof x.nodeType != 'undefined')

どうですか

obj instanceof HTMLElement
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top