3

我需要在 $element 上做一些 dom 遍历,但是 jQuery 或 jQlite 并没有做我需要的开箱即用的事情,所以我需要使用一个名为 closeChild 的 jQuery 插件。

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 默认情况下不会给你 $ 使用?还是我只是按错误的顺序做事?

4

2 回答 2

2

不,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.filterjqLit​​e 未实现的方法。这是所有可用angular.element 方法的列表。

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

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

于 2015-04-20T15:59:03.240 回答
0

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

你有两个选择:

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

我个人会使用选项1。

于 2015-04-20T15:54:46.757 回答