1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

jQueryの.find()はIE対応でJavaScriptの.find()は非対応

Posted at

jQueryには、要素の子要素を取得する方法に.children().find()があります。

.children()は子までを取得してくれるのに対して、
.find()は子と孫まで取得してくれます。便利ですね。

しかし、.find()を使ったページをIEで表示すると稀に「オブジェクトは 'find' プロパティまたはメソッドをサポートしていません。」というコンソールエラーが表示されます。なぜでしょうか。
それはJavaScriptの.find()はIE非対応だからです。
このコンソールエラーが表示されるということは、.find()がjQueryではなくVanilla JSと解釈されています。

.find()の対象が配列の場合、IEでコンソールエラーが発生する

その条件は、.find()の検索対象がjQueryオブジェクトか配列かの違いです。
つまり、jQueryが$("任意の値").find()
Vanilla JSがArray.prototype.find()と書き分けられる必要があります。

コンソールエラーが発生した箇所は.some()に置きかえる

本当は上記の条件にあわせてコードを書き換えるべきですが、応急処置として
.find()をBooleanとして利用している場合、そして検索対象が配列の場合(要は.find()をVanilla JSとして使う場合).some()で置き換えると意図した動きをしてくれるので参考にしてみてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?