jQuery から jqLite にいくつかの関数を追加しようとしているので、角度のあるアプリで jQuery ライブラリ全体をロードする必要はありません。この記事で Ben Nadel が使用した手法を使用しています。
http://www.bennadel.com/blog/2753-creating-jqlite-plugins-in-angularjs.htm
このような closestChild プラグインの実装が困難になっています。
https://github.com/lolmaus/jquery.closestchild/blob/master/jquery.closestchild.js
明らかに私は少し書き直したので、このようになります。
JQLite.prototype.closestChild = function(selector) {
var $children, $results;
$children = this.children();
if ($children.length === 0){
return $();
}
$results = $children.filter(selector);
if ($results.length > 0){
return $results;
}
else{
return $children.closestChild(selector);
}
};
...しかし、このエラーにつながります。
Error: [jqLite:nosel] http://errors.angularjs.org/1.4.0-rc.0/jqLite/nosel
そこで、エラーを検索したところ、何らかの理由で jqLite がセレクターと一致できず、タグ名のみが一致することがわかりました (これは役に立ちますか?)。私が理解できないのは、その記事の Ben の .filter() 関数と一緒に実行されていることです。これは、セレクターを指定すると正常に動作するようです。これは、この行で呼び出している関数とまったく同じです。
$results = $children.filter(selector);
それで、私の質問は、 $children をループして、それらのいずれかがプレーンな JavaScript を使用して渡されたセレクターまたはその他の回避策と一致するかどうかを確認する方法はありますか?