在我的项目中,我同时使用 jQuery 和 Angular。我已经通过 bower 安装了这些,并且正在使用 browserify 来加载文件。这似乎工作正常,除了 angular 似乎使用 jqLite。当我试图跑步时
angular.element(".workItem").hide();
我收到一条错误消息,说 jqLite 不支持查询选择器。我怎样才能解决这个问题并使用 jQuery?
我想在 $ 上使用 angular.element 进行测试。
谢谢!
在我的项目中,我同时使用 jQuery 和 Angular。我已经通过 bower 安装了这些,并且正在使用 browserify 来加载文件。这似乎工作正常,除了 angular 似乎使用 jqLite。当我试图跑步时
angular.element(".workItem").hide();
我收到一条错误消息,说 jqLite 不支持查询选择器。我怎样才能解决这个问题并使用 jQuery?
我想在 $ 上使用 angular.element 进行测试。
谢谢!
从文档:
要使用 jQuery,只需确保它在 angular.js 文件之前加载。
所以在你的index.html
文件中,你会想要这样的东西:
<html>
<head>
<script src='jquery.js'></script>
<script src='angular.js'></script>
</head>
</html>
这样做之后,angular.element
应该可以代替$
:
如果 jQuery 可用,则 angular.element 是 jQuery 函数的别名。如果 jQuery 不可用,则 angular.element 委托给 Angular 的内置 jQuery 子集,称为“jQuery lite”或“jqLite”。
IE。angular.element('.foo')
将与 相同$('.foo')
。
要使其与 browserify 一起使用,您必须要求它:将 jquery 依赖项添加到 bower 并在您的主文件中执行:
require('jquery');
global.jQuery = require('jquery');
global.$ = jQuery;
在此之前,browserify 看不到它,因为该引用仅在 bower 中。所以使用 browserify-shim 来制作胶水:
"browserify": { "transform": [ "browserify-shim" ] }, "browser": { "jquery": "./bower_components/jquery/dist/jquery.js"
有关完整信息,请参阅https://github.com/thlorenz/browserify-shim。
如果您使用的是 bower,请转到您的文件bower.json并将jquery放在任何角度库之前的依赖项中。
{
"name": "myadmin",
"version": "1.0.0",
"dependencies": {
"jquery": "~2.1.4",
"angular-animate": "~1.6.9",
"angular-cookies": "~1.6.9",
"angular-touch": "~1.6.9",
"angular-sanitize": "^1.6.9",
"angular-messages": "~1.6.9",
"angular-aria": "~1.6.9",
"angular-resource": "~1.6.9",
"angular-ui-router": "~0.4.0",
"angular-bootstrap": "~2.4.0",
"angular-toastr": "^2.1.1",
"animate.css": "~3.4.0",
"angular": "~1.7.0",
...