zoukankan      html  css  js  c++  java
  • get与eq的区别 (dom对象与jquery对象的区别)

    自己在这里绊倒过几次后 决定总结下 以后尽量不再犯这个最基础的低级错误

    .eq()  减少匹配元素的集合,根据index索引值,精确指定索引对象。
    .get() 通过检索匹配jQuery对象得到对应的DOM元素。

    同样是返回元素,那么eq与get有什么区别呢?

    eq返回的是一个jQuery对象,get返回的是一个DOM对象。举个例子:

    $( "li" ).get( 0 ).css("color", "red"); //错误
    $( "li" ).eq( 0 ).css("color", "red"); //正确

    get方法本质上是把jQuery对象转换成DOM对象,但是css属于jQuery构造器的,DOM是不存在这个方法的,如果需要用jQuery的方法,我们必须这样写:

    var li = $( "li" ).get( 0 );
    $( li ).css("color", "red"); //用$包装

    取出DOM对象li,然后用$再次包装,使之转变成jQuery对象,才能调用css方法,这样要分2步写太麻烦了,所以jQuery给我们提供了一个便捷方法eq()。

    eq()的实现原理就是在上面代码中的把eq方法内部转成jQuery对象:

    eq: function( i ) {
        var len = this.length,
            j = +i + ( i < 0 ? len : 0 );
        return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );

    上面实现代码的逻辑就是跟get是一样的,区别就是通过了pushStack产生了一个新的jQuery对象。

    jQuery的考虑很周到,通过eq方法只能产生一个新的对象,但是如果需要的是一个合集对象要怎么处理?因此jQuery便提供了一个slice方法:

    语法:

    .slice( start [, end ] )

    作用:

    根据指定的下标范围,过滤匹配的元素集合,并生成一个新的 jQuery 对象。

    因为是数组对象,意味着我们可以用silce来直接取值了,所以针对合集对象我们可以这样写代码:

    var arr = []
    arr.push( this.slice(start[,end]) )     
    this.pushStack(arr)

    这个this指的是jQuery对象,因为jQuery对象是数组集合,所以我们可以通过原生的silce方法直接取到集合数,然后通过包装处理即可了。

    slice: function() {
        return this.pushStack( slice.apply( this, arguments ) );
    },
  • 相关阅读:
    Hadoop 学习笔记 (十) hadoop2.2.0 生产环境部署 HDFS HA Federation 含Yarn部署
    hadoop 2.x 安装包目录结构分析
    词聚类
    Hadoop 学习笔记 (十一) MapReduce 求平均成绩
    Hadoop 学习笔记 (十) MapReduce实现排序 全局变量
    Hadoop 学习笔记 (九) hadoop2.2.0 生产环境部署 HDFS HA部署方法
    Visual Studio Code 快捷键大全(Windows)
    Eclipse安装教程 ——史上最详细安装Java &Python教程说明
    jquery操作select(取值,设置选中)
    $.ajax 中的contentType
  • 原文地址:https://www.cnblogs.com/yuan619821/p/8862686.html
Copyright © 2011-2022 走看看