bob体育官方平台
bob体育官方平台JQUERY中find方法

本文实例讲述了Jquery中find与each方法用法。分享给大家供大家参考。具体如下:

Jquery中find与each方法用法实例

  这篇文章主要介绍了Jquery中find与each方法用法,实例分析了find与each方法的功能、定义与使用技巧,需要的朋友可以参考下

  本文实例讲述了Jquery中find与each方法用法。分享给大家供大家参考。具体如下:

  一、find()方法

  jquery选择器非常强大,利用css的命名规约,可以更快更方便的找出想要的元素。

  比如:

  1

  2

  3

  4$("#id")

  $("#"+"id")

  $(this)

  $(element)

  等等,只要灵活运用,就能爆发出强大的可造型。

  但是在实际使用中,仍然觉得有些不足。

  如果想要在某个元素下寻找特定的元素,仅仅依靠上面这个方法,就必须对 $("#id")获取的元素进行遍历,获取其子元素。如此一来就显得格外的繁琐,代码量也非常庞大。

  于是这就需要用到find()方法。

  1

  2

  3$("#id").find("#child");

  $("#id").find(".child");

  $("#id").find("input[type='image']");

  非常方便好用。

  除了上面的find()方法之外,还有一种查找子元素的方法。

  1$(".child",parent);

  这种方法与find()方法的结果是一样的,也更加简洁。

  我们举个例子:

  1

  2

  3function(table){

  $("tr",table).css("background-color","red");

  }

  这种方法,方便代码的重用,更符合闭包的写法。

  二、each()方法

  有的时候经常会用到数组。在不知道each()方法前,如果碰到数组遍历,我一般都是这么写的:

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10var arr = new Array();

  arr.push(1);

  arr.push(2);

  arr.push(3);

  for(var i =0;i

  {

  (function(m){

  console.log(this);

  })(i);

  }

  多么繁琐啊!!现在又了each(),生活从此变轻松。

  上面的这段代码,只要一句话。

  1

  2

  3

  4

  5

  6

  7

  8var arr = new Array();

  arr.push(1);

  arr.push(2);

  arr.push(3);

  arr.each(function(){

  console.log(this);

  });

  使用each之后,结构立马变得简洁优雅起来。

 

  希望本文所述对大家的jQuery程序设计有所帮助。

 

这篇文章主要介绍了Jquery中find与each方法用法,实例分析了find与each方法的功能、定义与使用技巧,需要的朋友可...

【jquery】find()方法和each()方法 

一、find()方法

相关文章

相关搜索:

今天看啥

搜索技术库

返回首页

  • IOS8天气应用可以显示细节数据技巧
  • CAD迷你看图如何查看设备清单
  • 华为Mate7如何开启按电源键结束通话
  • 电脑回收站无法调整容量的大小怎么办?
  • 新三板是什么意思
  • 如何在win7旗舰版电脑中删除U盘使用历史记录

相关频道: HTML/CSS  HTML5  Javascript  jQuery  AJax教程  前端代码  正则表达式  Flex教程  WEB前端教程  

find()方法

jquery选择器非常强大,利用css的命名规约,可以更快更方便的找出想要的元素。

比如:

$("#id")

$("#"+"id")

$(this)

$(element)

等等,只要灵活运用,就能爆发出强大的可造型。

但是在实际使用中,仍然觉得有些不足。

如果想要在某个元素下寻找特定的元素,仅仅依靠上面这个方法,就必须对 $("#id")获取的元素进行遍历,获取其子元素。如此一来就显得格外的繁琐,代码量也非常庞大。

于是这就需要用到find()方法。

$("#id").find("#child");

$("#id").find(".child");

$("#id").find("input[type='image']");

非常方便好用。

除了上面的find()方法之外,还有一种查找子元素的方法。

$(".child",parent);

这种方法与find()方法的结果是一样的,也更加简洁。

我们举个例子:

function(table){

      $("tr",table).  css("background-color","red");

}

这种方法,方便代码的重用,更符合闭包的写法。

 

jquery选择器非常强大,利用css的命名规约,可以更快更方便的找出想要的元素。

each()方法

有的时候经常会用到数组。在不知道each()方法前,如果碰到数组遍历,我一般都是这么写的:

var arr = new Array();

arr.push(1);

arr.push(2);

arr.push(3);

for(var i =0;i<arr.length;i++)

{

      (function(m){

            console.log(this);

      })(i);

}

多么繁琐啊!!现在又了each(),生活从此变轻松。  

上面的这段代码,只要一句话。

var arr = new Array();

arr.push(1);

arr.push(2);

arr.push(3);

 

arr.each(function(){

   console.log(this);

});

使用each之后,结构立马变得简洁优雅起来。

关于each()的源代码,可以参照这个:

 

 

 

 

 

代码

 

/*!   

 * jQuery源码分析-each函数  

 * jQuery版本:1.4.2  

 *  

 * ----------------------------------------------------------  

 * 函数介绍  

 *  

 * each函数通过jQuery.extend函数附加到jQuery对象中:  

 * jQuery.extend({  

 *     each: function() {}  

 * });  

 * 如果对jQuery.extend函数源码还不了解,可以参考《jQuery源码分析-extend函数》一文  

 *  

 * jQuery.each方法用于遍历一个数组或对象,并对当前遍历的元素进行处理  

 * jQuery.each方法可以为处理函数增加附带的参数(带参数与不带参数的回调使用方法不完全一致)  

 *  

 * ----------------------------------------------------------  

 * 使用说明  

 * each函数根据参数的类型实现的效果不完全一致:  

 * 1、遍历对象(有附加参数)  

 * $.each(Object, function(p1, p2) {  

 *     this;      //这里的this指向每次遍历中Object的当前属性值  

 *     p1; p2;    //访问附加参数  

 * }, ['参数1', '参数2']);  

 *  

 * 2、遍历数组(有附件参数)  

 * $.each(Array, function(p1, p2){  

 *     this;      //这里的this指向每次遍历中Array的当前元素  

 *     p1; p2;    //访问附加参数  

 * }, ['参数1', '参数2']);  

 *  

 * 3、遍历对象(没有附加参数)  

 * $.each(Object, function(name, value) {  

 *     this;     //this指向当前属性的值  

 *     name;     //name表示Object当前属性的名称  

 *     value;    //value表示Object当前属性的值  

 * });  

 *  

 * 4、遍历数组(没有附加参数)  

 * $.each(Array, function(i, value) {  

 *     this;     //this指向当前元素  

 *     i;        //i表示Array当前下标  

 *     value;    //value表示Array当前元素  

 * });  

 * ----------------------------------------------------------  

 *  

 */  

//jQuery.each(), $.each()   

//@param {Object}|{Array} object 需要遍历处理的对象或数组   

//@param {Function} callback 遍历处理回调函数   

//@param {Array} args callback回调函数的附加参数   

each: function(object, callback, args){   

  

    //当需要遍历的是一个对象时,name变量用于记录对象的属性名   

    var name,       

       

    //当需要遍历的是一个数组时,i变量用于记录循环的数组下标   

    i = 0,       

       

    //遍历数组长度,当需要遍历的对象是一个数组时存储数组长度   

    //如果需要遍历的是一个对象,则length === undefined   

    length = object.length,       

       

    //检查第1个参数object是否是一个对象   

    //根据object.length排除数组类型,根据isFunction排除函数类型(因为函数也是对象)   

    isObj = length === undefined || jQuery.isFunction(object);   

       

    //回调函数具有附加参数时,执行第一个分支   

    //if(!!args) {   

    if (args) {   

           

        //需要遍历的是一个对象   

        if (isObj) {   

               

            //遍历对象属性,name是对象的属性名,再函数顶部已声明   

            //许多人不太习惯for(var name in object)方式,如果不进行声明,则name就会被定义为全局变量   

            for (name in object) {   

               

                //调用callback回调函数,且回调函数的作用域表示为当前属性的值   

                //如:callback() {  this; //函数中的this指向当前属性值   

                //将each的第3个参数args作为回调函数的附加参数   

                if (callback.apply(object[name], args) === false) {   

                   

                    //如果在callback回调函数中使用return false;则不执行下一次循环   

                    break;   

                }   

            }   

        }   

        //需要遍历的是一个数组   

        else {   

           

            //循环长度,循环变量i在函数顶部已定义   

            //循环变量的自增在循环内部执行   

            for (; i < length;) {   

               

                //调用callback函数,与上面注释的callback调用一致   

                //此处callback函数中的this指向当前数组元素   

                if (callback.apply(object[i++], args) === false) {   

                    break;   

                }   

            }   

        }   

           

    }   

    //回调函数没有附加参数时,执行第二个分支   

    else {   

       

        //需要遍历的是一个对象   

        if (isObj) {   

           

            //循环对象的属性名,name在函数顶部已定义   

            for (name in object) {   

               

                //调用callback回调函数   

                //在不带参数的对象遍历中,作用域表示为当前属性的值   

                //且回调函数包含两个参数,第一个数当前属性名,第二个是当前属性值   

                //我觉得这句代码修改一下会更好用:if(callback.call(object, name, object[name]) === false) {   

                if (callback.call(object[name], name, object[name]) === false) {   

                   

                    //如果在callback回调函数中使用return false;则不执行下一次循环   

                    break;   

                }   

            }   

        }   

        //需要遍历的是一个数组   

        else {   

            //这里的for写法有点BT,解释为:   

            //var value = object[0];   

            //for(; i < length;) {   

            //    if(false === callback.call(value, i, value)) {   

            //        break;   

            //    }   

            //    value = object[++i];   

            //}   

            //同样,我觉得这里的代码稍加修改会更好用:   

            //for (; i < length && false !== callback.call(object, i, object[i++]);) {   

            //}   

            for (var value = object[0]; i < length && callback.call(value, i, value) !== false; value = object[++i]) {   

            }   

        }   

    }   

       

    //这里返回遍历的对象或数组,但object没有被更改,因此一般不给$.each()赋值   

    //但是如果按照我在注释中所修改的写法来使用,且在callback回调函数中对this(即对object的引用)进行了修改   

    //则这里返回的object是被修改后的对象或数组   

    return object;   

}

$$

等等,只要灵活运用,就能爆发出强大的可造型。

但是在实际使用中,仍然觉得有些不足。

如果想要在某个元素下寻找特定的元素,仅仅依靠上面这个方法,就必须对 $获取的元素进行遍历,获取其子元素。如此一来就显得格外的繁琐,代码量也非常庞大。

上一篇:没有了 下一篇:没有了
返回顶部