jQuery.each方法返回对象本身,这个作用不大,一般我们需要在循环中筛选,返回一个东西。
如:<input type="radio" value="a" name="a"/>A
<input type="radio" value="b" name="a"/>B
<input type="radio" value="c" name="a"/>C
<input type="button" value="Check" onclick="alert(getChoice())" />
<script>
function getChoice() {
return $('input[name=a]').each(function () { if(this.checked) return this.value; })
}
</script>
不过不知道修改这个方法会不会有问题,还请大家评定一下。修改方法如下:jQuery.each=function (object,callback,args) {
var name,i=0,
length=object.length,
isObj=length===undefined||jQuery.isFunction(object);
var result; if(args) {
if(isObj) {
for(name in object) {
if((result=callback.apply(object[name],args))!==undefined) {
return result;
}
}
} else {
for(;i<length;) {
if((result=callback.apply(object[i++],args))!==undefined) {
return result;
}
}
} } else {
if(isObj) {
for(name in object) {
if((result=callback.call(object[name],name,object[name]))!==undefined) {
return result;
}
}
} else {
for(var value=object[0];i<length;value=object[++i]) { if((result=callback.call(value,i,value))!==undefined) return result; }
}
}
}
使用方法:返回一个有效值则退出循环,并且each方法返回该值,其他与jQuery.each相同。若未能找到项目,则方法返回undefined

解决方案 »

  1.   

    恩,学Jquery each的时候同时要学习Jquery map两个对比一下!
      

  2.   

    jQuery.each方法返回对象本身,这个作用不大
    ----这个还是有点关系的,看看$(...).each( fn )的实现就是直接返回jQuery.each()的结果。直接返回jQuery实例,意味着后面可以直接跟其它jQuery函数:比如$(...).each( fn ).append( ... )之类。按照LZ的改法,会破坏jQuery的函数串接思想,可能对其他程序造成问题。
      

  3.   

    本帖最后由 zswang 于 2010-04-21 22:49:16 编辑
      

  4.   

    JQuery任何一个方法都返回选择器查询的结果,可以方便的重用查询结果。
    你已经破坏了jquery的正常使用,参考如下代码:
    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
    </head>
    <body>
    <span>1</span><br/>
    <span>2</span><br/>
    <span>3</span><br/>
    <span>4</span><br/>
    <span>5</span><br/>
    <script>
    var a = 0;
    var b = 1;
    $("span").each(function(){
    a += +$(this).html();
    }).css("background", "red").each(function(){
    b *= +$(this).html();
    });
    alert([a, b]);
    </script>
    </body>
    </html>
      

  5.   

    each方法并不是返回查询结果,而是返回object对象each: function( object, callback, args ) {
       
       return object;
    }是不是打破jQuery的思想就不用研究了,因为我一般不会这样使用。
    只是不知道这样框架会不会产生问题,因为我看到框架里面也会调用jQuery.each。