jqLiteとは
AngularJSで使用できる軽量版jQuery。
jqLiteの使い方
以下のように要素をangular.element()に入れてjqLiteのメソッドを使用する。
var foo = document.getElementById('foo'); var fooElem = angular.element(foo); fooElem.addClass('bar');
ただし、通常のjQueryとは使い方が異なるため以下の3つの点に注意が必要だ。
使用できるメソッドが少ない
jqLiteで使用できるメソッドはバージョン1.4の時点では以下の35種類しかない。
- addClass()
- after()
- append()
- attr()
- bind()
- children()
- clone()
- contents()
- css()
- data()
- detach()
- empty()
- eq()
- find()
- hasClass()
- html()
- next()
- on()
- off()
- one()
- parent()
- prepend()
- prop()
- ready()
- remove()
- removeAttr()
- removeClass()
- removeData()
- replaceWith()
- text()
- toggleClass()
- triggerHandler()
- unbind()
- val()
- wrap()
バージョンによって使用できるメソッドが異なる
バージョンが古いと使用できるメソッドはさらに少なくなる。以下はバージョン別の新規追加メソッド。
バージョン | 追加メソッド |
---|---|
v1.3.0 | detach() |
v1.2.6 | one() |
v1.2.5 | empty() |
v1.2.0 | on(), off() |
v1.0.3 | triggerHandler() |
v1.0.0 | jqLite自体は初期のころからある |
#id, .class指定ができない
jQueryであればelem.find('.item').addClass('red')のような記述が可能だが、jqLiteではfindなどで使えるのはタグだけで#id, .classは使用できない。
そのためdirectiveなどでクリックしたときに子要素にclassを追加したい場合は以下のような記述になる。
app.directive('addRed', function() { return { link: function(scope, elem) { elem.on('click', function() { var item = angular.element(elem[0].querySelector('.item')); // elem.find('.item').addClass('red')ではない item.addClass('red'); }); } }; });
ちなみにjqLiteはAngular 2.0からなくなります。