<form> <input type="text" value="设置value" /> <input type="text" value="获取value"/> <input type="text" value="回调拼接value" /> <input type="text" name="test" value="删除value" /> </form> <script type="text/javascript"> //找到第三个input,通过使用一个函数来设置属性 //可以根据该元素上的其它属性值返回最终所需的属性值 //例如,我们可以把新的值与现有的值联系在一起: $('input:eq(2)').attr('value',function(i, val){ return i//'通过function设置' + val }) </script>
代码如上
资料上说attr(name,function(index,val){})中index是指选中元素在同级元素的index值 但上面这个例子里这个input的index不应该是2么 为什么返回的是0?
所以第一种情况i=0;第二种情况i= 0 1 2 3 ,input:eq(2)的i=2;第三种情况i=0 1 2,input:eq(2)的i=1;
这个我刚才试了一下,这个i的值应该是$('input:eq(2)')中input:eq(2)的索引值。但是!如果你把其他元素一并放进来的话,像$('input:eq(2),input:eq(1),input:eq(3),input:eq(0)')这样,就算你乱它们的本来顺序,返回的i也是按他们实际的索引号来排的。再但是!上面是4个都引用了,如果你只添加一部分,像$('input:eq(2),input:eq(1),input:eq(3)')这样,情况有又不一样了,返回的值是这三个按实际的排序方式下的新数组的索引号。
总结起来就是,返回i的这个索引号,是按他们实际排序的情况,结合你所查找的元素,新生成另一个数组(就是$(按实际索引排序的新数组--就算打乱顺序查找也不会影响排序)),这个新数组的索引号就是i,不知道这么说你明白不明白~