首页 > 代码库 > JQuery日记 2014-04.29
JQuery日记 2014-04.29
JQuery原型对象(续)
(4).each(callback,args)
迭代JQuery对象上的元素并调用callback参数,如果某次迭代中callback返回false,停止迭代.args为callback的参数,args必须为数组.在callback中this引用的当前迭代的元素.
Test_HTML
<body>
<div id= "div1">div1</div ><div id= "div2">div2</div >
<span id= "span1">span1</span ><span id= "span2">span2</span ><span id="span3" >span3 </span>
</body>
Test_Script
$(function(){ var $div = $(‘div‘ ); var args = [":参数" ] $div.each( function(){ alert( this.id + arguments[0]); return false ; },args); //只弹出一次 div1:参 数 });
.each(callback, args)调用了JQuery的静态函数JQuery.each(obj, callback, args)
JQuery.each(obj, callback, args)的源码也比较简单,见注释 // args is for internal usage only each: function( obj, callback, args ) { var value, i = 0, length = obj.length, isArray = isArraylike( obj ); //如果有参数 if ( args ) { //如果是类数组 //则用使用obj[下标]的方式访问迭代的元素 if ( isArray ) { for ( ; i < length; i++ ) { //绑定回调函数的执行作用域,即回调函数使用this时,this指向当前迭代的元素,回调函数的参数为传入的args value = http://www.mamicode.com/callback.apply( obj[ i ], args );>(5) .map(callback)迭代JQuery对象中的元素,每次迭代执行callback方法,返回callback返回值数组组成的新的JQuery对象.
Test_Html
<body>
<div id= "div1" >div1 </div >< div id= "div2" >div2 </div >
<span id= "span1" >span1 </span >< span id= "span2" >span2 </span >< span id ="span3" >span3</span>
</body>
Test_Script
var $div = $(‘div‘ ); $div.map( function (){ return this .parentNode; }).each( function (){ alert( this .tagName); //弹出两次 BODY });
map源码:
map: function( callback ) { return this .pushStack( jQuery.map( this, function ( elem, i ) { return callback.call( elem, i, elem ); })); },
.map(callback)调用$.map()根据其返回的元素数组返回一个新的JQuery对象.
$.map(elements, callback, arg)源码
map: function( elems, callback, arg ) { var value, i = 0, length = elems.length, isArray = isArraylike( elems ), //存放结果的数组 ret = []; // Go through the array, translating each of the items to their new values if ( isArray ) { for ( ; i < length; i++ ) { //嗲用callback绑定执行作用域为当前迭代元素 value = http://www.mamicode.com/callback( elems[ i ], i, arg );>
JQuery日记 2014-04.29
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。