jquery each()源代码

代码如下:

// args is for internal usage only
each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction(object);
if ( args ) {
if ( isObj ) {
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if ( isObj ) {
for ( name in object ) {
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( var value = object[0];
i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
}
}
return object;
},

分析:jquery文档说 each(callback)作用是以每一个匹配的元素作为上下文来执行一个函数。就是用each来遍历数组,来执行同一个方法
这个方法的实现最关键的是:call与apply的用法:call(apply)就是将函数的对象的从初始的上下文改为thisObj指向的对象,
就是说用thisObj来代替原来的对象来执行方法:call与apply的第一个参数为this指向的对象,而后面的参数都下传给函数的,
call传给函数的参数用逗号分隔而apply则为一个数组。
//1.callback.apply( object[ name ], args )
//2.callback.call( object[ name ], name, object[ name ] )

(0)

相关推荐

  • Jquery each方法跳出循环,并获取返回值(实例讲解)

    return false:将停止循环 (就像在普通的循环中使用 'break').return true:跳至下一个循环(就像在普通的循环中使用'continue'). 复制代码 代码如下: function test(){var success = false;$(..).each(function () {   if (..) {       success = true;       return false;   }}); return success ;} jquery是对象链,所以$

  • jquery $.each() 使用小探

    复制代码 代码如下: <html> <head> <title> jquery each使用 </title> <script type='text/javascript' src='jquery-1.8.2.min.js'></script> <script type="text/javascript"> $(document).ready(function(){ //进行遍历一维数组 var arr

  • 浅析jQuery的链式调用之each函数

    话说回来,虽然jQuery让学习前端技术的越来越多了起来,(本人就是因为学校图书馆偶然间遇到了一本jQuery基础教程(二)开始想深入的学习前端技术),关于jQuery的博文甚至多于javascript,它让编程的门槛大大的降低了,但是它隐藏了太多细节了,形如$('#id').append('<p>xxx</p>').clone().appendTo(x).end().css(...)................这样操作的模式已经很难找到常规javascript的影子.浏览器的

  • jquery $.each 和for怎么跳出循环终止本次循环

    如何在jquery 中的循环中终止本次循环或者跳出循环呢?查些资料,并且试验过发现下面方法可以 1.for循环中我们使用continue:终止本次循环计入下一个循环,使用break终止整个循环. 2.而在jquery中 $.each则对应的使用return true 和return false. break可以跳出switch...case语句,继续执行switch语句后面的内容.break语句还可以跳出循环,也就是结束循环语句的执行. continue语句的作用为结束本次循环,接着进行下一次是

  • jQuery的each终止或跳过示例代码

    涉及迭代,不可避免需要有非正常终止,或强制跳过的情况.在jQuery的each函数中,存在以下关系: continue :return true; break :return false; 直接return也会跳出jQuery. 设置下拉列表选中,并终止迭代 复制代码 代码如下: $("#area option").each(function(){ if($(this).text()==addrTmp[2]){ $(this).attr("selected", &q

  • JQuery for与each性能比较分析

    最近在做一个性能优化方面的工作,遇到很多细节问题,现在一一把遇到的问题记录下来分享给大家,废话就不多谢,我直接贴代码. 复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>for与each性能比较</title> <script src="../Cks/jquery-1.7.1.min.j

  • jQuery.each()用法分享

    例遍数组,同时使用元素索引和内容.(i是索引,n是内容) 复制代码 代码如下: $.each( [0,1,2], function(i, n){ alert( "Item #" + i + ": " + n ); }); 例遍对象,同时使用成员名称和变量内容.(i是成员名称,n是变量内容) 复制代码 代码如下: $.each( { name: "John", lang: "JS" }, function(i, n){ aler

  • jquery的each方法使用示例分享

    对于jQuery对象,只是把each方法简单的进行了委托:把jQuery对象作为第一个参数传递给jQuery的each方法.换句话说:jQuery提供的each方法是对参数一提供的对象的中所有的子元素逐一进行方法调用.而jQuery对象提供的each方法则是对jQuery内部的子元素进行逐个调用. 复制代码 代码如下: jQuery.prototype.each=function( fn, args ) {  return jQuery.each( this, fn, args ); } 让我们

  • JQuery each打印JS对象的方法

    我们知道javascript可以用alert输出变量的值,但是有时候返回的是一个对象,json格式的数据,jQuery可以用这个方法循环遍历读出对象的值,假如这个对象名称是obj,循环遍历打印它的值: 复制代码 代码如下: $.each(obj,function(key,val){      if($.isPlainObject(val) || $.isArray(val)){          subObj(val);      }else{          alert(key+'='+va

  • 关于jquery中全局函数each使用介绍

    jquery 包含了两个each一个是 $().each 另一个是 $.each 区别就在于前一个是jquery对象的内置函数 而后一个 这是对象的遍历函数 一般用于ajax中获取不同的对象数据进行遍历以json为例 jquery 的getJSON 快捷方法可以便利的取得 指定url中的json文件 jquery 会内置的调用 js原生 的eval函数来解析json文本 转换成一个 js对象 然后通过each全局函数 进行遍历 以取得其中的值  语法 each(data,[params],fun

  • 解析prototype,JQuery中跳出each循环的方法

    复制代码 代码如下: function chk(){        var flag=true;        var msg='';        var tips={'username':'姓名','tel':'电话','company':'公司名称','loupan_name':'楼盘名','sdate':'团购时间','content_1':'团购内容'};        $$('.required').each(function(el){            if($F(el).bl

  • jquery退出each循环的写法

    在回调函数里return false即可,大多数jq的方法都是如此的 =================================== 返回 'false' 将停止循环 (就像在普通的循环中使用 'break'). 返回 'true' 跳至下一个循环(就像在普通的循环中使用'continue').

  • jquery $.each()使用探讨

    复制代码 代码如下: <html> <head> <title> jquery each使用 </title> <script type='text/javascript' src='jquery-1.8.2.min.js'></script> <script type="text/javascript"> $(document).ready(function(){ //进行遍历一维数组 var arr

  • 关于jQuery中的each方法(jQuery到底干了什么)

    1. 估计很多人都会用到jQuery中的each方法. 那就来看一看jQuery都干了些什么. 找到jquery中的each源码: 复制代码 代码如下: each: function( object, callback, args ) { var name, i = 0, length = object.length, isObj = length === undefined || jQuery.isFunction( object ); if ( args ) { if ( isObj ) {

  • JQuery each()函数如何优化循环DOM结构的性能

    如果对jQuery这东西只停留在用的层面,而不知其具体实现的话,真的很容易用出问题来.这也是为什么近期我一直不怎么推崇用jQuery,这框架的API设定就有误导人们走上歧途之嫌. 复制代码 代码如下: $.fn.beautifyTable = function(options) { //定义默认配置项,再用options覆盖 return this.each(function() { var table = $(this), tbody = table.children('tbody'), tr

  • jquery里的each使用方法详解

    each()函数是基本上所有的框架都提供了的一个工具类函数,通过它,你可以遍历对象.数组的属性值并进行处理.jQuery和jQuery对象都实 现了该方法,对于jQuery对象,只是把each方法简单的进行了委托:把jQuery对象作为第一个参数传递给jQuery的each方法.换句话 说:jQuery提供的each方法是对参数一提供的对象的中所有的子元素逐一进行方法调用.而jQuery对象提供的each方法则是对jQuery内 部的子元素进行逐个调用. 这个JQUERY里的核心代码 复制代码

  • jquery each的几种常用的使用方法示例

    jQuery源码里自己也有很多用到each方法.其实jQuery里的each方法是通过js里的call方法来实现的.下面简单介绍一下call方法. call这个方法很奇妙,其实官方的说明是:"调用一个对象的一个方法,以另一个对象替换当前对象."网上更多的解释是变换上下文环境,也有说是改变上下文this指针. 复制代码 代码如下: call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 参数 thisObj  可选项.将被用作当前对象的对象.arg1,

  • jquery foreach使用示例

    复制代码 代码如下: <form id="input_iForm" action="${pageContext.request.contextPath}/transfer/input_salary.shtml"> <input type="text" class="input_w150" vili="true" onkeyup="formatBankNo(this)"/

随机推荐