我是菜鸟,最近网上看了一篇jQuery中文入门指南,里面有如下语句:
$(document).ready(function() {
        $("#orderedlist").find("li").each(function(i) {
               $(this).html( $(this).html() + " BAM! " + i );
        });
});这里面的变量 i 怎么没有定义也可以用呢?
或者是库里面已经定义了?在哪里能看到已经定义的变量和常量呢?谢谢!

解决方案 »

  1.   

    是索引  类似
    for(var i=...){
    }
      

  2.   

    i在函数调用的时候传入的,想要知道这些,可以去看帮助文档或研究jQuery的源代码
      

  3.   

    这是jquery内部定义的一个函数。那个i是li的个数序号。
      

  4.   

    可以这么理解:
    function(i) { 
                  $(this).html( $(this).html() + " BAM! " + i ); 
            }
    返回的是一个匿名函数。因此,i是这个匿名函数的形参而已。你也可以改成j啦、K啦,***啦。
    而库函数each的参数需要一个函数(指针、委托)。需要注意的是,each里执行的函数,  索引(也就是i)是在参数的第一个。你也可以再加上一个参数(指向li的JQuery对象:
    function(i,dom)
    {
       dom.html(dom.html()+"BAM!"+i);
    }
      

  5.   

    $.each(callback) 以每一个匹配的元素作为上下文来执行一个函数。意味着,每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元素(每次都是一个不同的匹配元素)。而且,在每次执行函数时,都会给函数传递一个表示作为执行环境的元素在匹配的元素集合中所处位置的数字值作为参数(从零开始的整形)。 返回 'false' 将停止循环 (就像在普通的循环中使用 'break')。返回 'true' 跳至下一个循环(就像在普通的循环中使用'continue')。
      

  6.   

    第二个参数是元素对象,而不是jq对象 function(i,dom)
     {
        //dom.html(dom.html()+"BAM!"+i);
        alert(this==dom);//true
     }