LoginSignup
2
0

More than 5 years have passed since last update.

結論: AngularJSはjQueryが利用可能な時、angular.elementをjQueryへのエイリアスとする

Last updated at Posted at 2017-06-22

はじめに

私は最近とあるプロジェクトにおいてAngularJS 1.5.11を使っていて、jQuery3系も読み込まれているが使わないようにしている
(いつか排除したいため)

問題

ここで以下のようなコードがある

let target = angular.element.find(".classname");

今まで普通にこのようなコードを書いていたが、オンラインエディタで実行しようとしたら、結果がundefinedになってしまった

原因

調べてみると、AngularJS組み込みのjqLiteのfind()メソッドはタグ名での検索のみ実装されているらしい

find() - Limited to lookups by tag name

参照: https://docs.angularjs.org/api/ng/function/angular.element

なぜ今まで動いていた?

もし、jQueryが利用可能であれば、angular.elementはjQuery関数へのエイリアスになります。 そうでなければ、angular.elementは、"jQuery lite"または"jqLite"と呼ばれる、 Angular組み込みのjQueryのサブセットに委譲します。

参照: http://js.studio-kingdom.com/angularjs/ng_global_apis/angular_element

AngularJSはjQueryが利用可能な時、angular.elementをjQueryへのエイリアスにするということでした

結論

誰もjQueryからは逃げられない......

実際のところそんな躍起になってjQueryを排除することもないし、積極的に使っていけばいいんじゃないかという気持ちになった

2
0
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
2
0