当前位置: 首页 > news >正文

Angular.element和$document的使用方法分析,代替jquery

AngularJs是不直接操作DOM的,但是在平时的开发当中,我们有的时候还是需要操作一些DOM的,如果使用原生的JS的话操作过于麻烦,所以大家一般都是使用jQuery,jQuery虽然好用,但是AngularJs是不建议和JQuery同时使用的,所以AngularJs给我们也提供了一些操作DOM的方法———Jqlite

下面以addClass()方法为例给大家讲解一下Jqlite的使用:

查阅官方提供的api,可以看到使用方法是angular.element(ele),其中,允许传入的参数ele的类型是“HTML string or DOMElement to be wrapped into jQuery.”一般传入参数DOMElement

方法一:

var test = angular.element(document.querySelector(‘#testId’));
test.addClass(‘testClass’);

以原生js的document对象的querySelector方法获取元素的id,括号内的使用方法同jquery一致,#代表id,该方法返回的是当前div的DOMElement对象,通过angular.element方法即可将即转化为一个jQuery对象,从而对其操作。

方法二:

var test = angular.element(document.getElementById(‘test’); test.addClass(‘testClass’);

getElementById的方法相信大家用到的比较多,其返回的也是一个DOMElement对象

方法三:

angular.forEach(angular.element(document).find('div'),function(node){             if(node.id == 'testId'){                      node.addClass('testClass');             } if(node.className == ‘testClass’){ node.removeClass(‘testClass’) }            })

find搜索的是tagName,这里使用的是div,当然也可以是p标签等等。

方法四:使用$documen

注:不要忘记注入

$document就和angular.element(document)是一样的,是一个整体的dom结构树,包含jqlite的所有方法,所以方法三也可以改为:

angular.forEach($document.find('div'),function(node){             if(node.id == 'testId'){                      node.addClass('testClass');             } if(node.className == ‘testClass’){ node.removeClass(‘testClass’) }         })

另外$document[0]和原生JS的document等效

所以,方法一和方法二可以改为

var test = angular.element($document[0].getElementById(‘test’); test.addClass(‘testClass’);

以及

var test = angular.element($document[0].getElementById(‘test’); test.addClass(‘testClass’);

转载于:https://www.cnblogs.com/joyco773/p/5691751.html

相关文章:

  • rsyslog日志服务的配置文件分析
  • HDU 2177 —— (威佐夫博弈)
  • 7.22号布置的作业
  • HDU2097 Sky数
  • 主机OS重装的节点加回RAC集群步骤示例(11gR2 RAC)
  • 5.迪米特法则(Law Of Demeter)
  • 并查集(Union-Find)算法介绍
  • 创建 多个 MySQL docker 出现错误时
  • ocx控件打印之基础篇
  • unity 中 protoc-gen-lua 生成 lua 文件
  • django 添加comments app
  • Yeoman_Bower_Grunt
  • Spring @Resource, @Autowired and @Inject 注入
  • 标准I/O和管道
  • 深入理解java的抽象类和接口(转载)
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • create-react-app做的留言板
  • Java基本数据类型之Number
  • Java应用性能调优
  • java中具有继承关系的类及其对象初始化顺序
  • JS笔记四:作用域、变量(函数)提升
  • Python学习之路16-使用API
  • React中的“虫洞”——Context
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 关于for循环的简单归纳
  • 如何进阶一名有竞争力的程序员?
  • 三分钟教你同步 Visual Studio Code 设置
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 突破自己的技术思维
  • 微信小程序实战练习(仿五洲到家微信版)
  • 问题之ssh中Host key verification failed的解决
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 2017年360最后一道编程题
  • 阿里云重庆大学大数据训练营落地分享
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # 数据结构
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (待修改)PyG安装步骤
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (三分钟)速览传统边缘检测算子
  • (一)Linux+Windows下安装ffmpeg
  • .describe() python_Python-Win32com-Excel
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .net 反编译_.net反编译的相关问题
  • .net 受管制代码
  • .NET 中 GetProcess 相关方法的性能
  • .net流程开发平台的一些难点(1)
  • [ C++ ] STL---仿函数与priority_queue
  • [20150707]外部表与rowid.txt
  • [APIO2012] 派遣 dispatching
  • [C#]C#学习笔记-CIL和动态程序集
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强