• 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

      方法一:querySelector

    1 //这里也可以查询.className,前提是这个className是唯一的,因为querySelector返回的是第一个匹配到的元素
    2 var test = angular.element(document.querySelector(‘#testId’));
    3 test.addClass(‘testClass’);

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

      方法二:getElementById

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

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

      方法三:循环查找

    1 angular.forEach(angular.element(document).find('div'),function(node){
    2             if(node.id == 'testId'){
    3                 node.addClass('testClass');
    4             }
    5 if(node.className == ‘testClass’){
    6 node.removeClass(‘testClass’)
    7   }
    8 })

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

      方法四:使用$documen

      注:不要忘记注入

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

    1 angular.forEach($document.find('div'),function(node){
    2             if(node.id == 'testId'){
    3                      node.addClass('testClass');
    4             }
    5 if(node.className == ‘testClass’){
    6 node.removeClass(‘testClass’)
    7  }
    8 })

      另外:

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

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

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

      以及

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

      

  • 相关阅读:
    python 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下
    python 删除文件或文件夹
    Computer Science Theory for the Information Age-1: 高维空间中的球体
    Jordan Lecture Note-12: Kernel典型相关分析(Kernel Canonical Correlation Analysis, KCCA).
    王道论坛研究生机试练习赛(二)
    Jordan Lecture Note-11: 典型相关分析(Canonical Correlation Analysis, CCA).
    PAT 1021
    Jordan Lecture Note-10: Kernel Principal Components Analysis (KPCA).
    PAT 1020
    PAT 1019
  • 原文地址:https://www.cnblogs.com/i-want-to-be-like-an-sun/p/7526201.html
Copyright © 2020-2023  润新知