Angular JS - 添加一个 jquery 插件到 jQlite

Angular JS - Adding a jquery plugin to jQlite

我需要在 $element 上做一些 dom 遍历,但是 jQuery 或 jQlite 不能开箱即用,所以我需要使用 jQuery 名为 closestChild 的插件。

https://github.com/lolmaus/jquery.closestchild/blob/master/jquery.closestchild.js

我已经使用 bower 安装,我试图在我的脚本标签中 angular.min.js 之后加载它,但仍然出现以下错误。

Uncaught TypeError: Cannot read property 'fn' of undefined

那么,我假设 Angular 附带的 jQlite 不会默认为您提供 $ 以供使用?或者我只是按错误的顺序做事?

jQlite 不支持 jQuery 插件。实际上,它是一个轻量级的选择器工具——而不是一个支持扩展的重量级工具,比如 jQuery。

你有两个选择:

  1. 使用 JavaScript 实现功能 ( element.getElementBySelector('foo)[0] ).
  2. 在您的项目中包含 jQuery。

我个人会使用选项 1。

不,angular.element (jqLit​​e) 不导出 $ 全局变量。所以你不能在没有 jQuery 的情况下使用 Angular 的任何 jQuery 插件。在某些情况下,如果您在包含插件之前手动创建 $ 引用,就可以解决它,就像它是 jQuery 一样。例如像这样:

<script src="path-to-angular.js"></script>
<script>
window.$ = window.jQuery = angular.element;
window.$.fn = window.$.prototype;
</script>
<script src="path-to-jquery.plugin.js"></script>

但是,在你的情况下它不会工作,因为感兴趣的插件使用 $.fn.filter 方法,jqLit​​e 没有实现。这是所有可用的列表 angular.element methods.

您可以自己实现其中一些并在插件之前包含..

但是,如果您想使用 jQuery 插件,我建议实际使用 jQuery。