2011-06-03 57 views
3

在这段代码中,函数返回什么?并且该值被分配给每个div的id属性。我发现它返回第一个div的div-id0,第二个div的返回值是div-id1。正在发生?jquery自动返回值

$("div").attr("id", function (arr) { 
    return "div-id" + arr; 
}) 
+0

看一下[documentation](http://api.jquery.com/attr/)会发现:'.attr(attributeName,function(index,attr))'。所以'arr'是元素集中元素的索引。 – 2011-06-03 11:37:03

回答

2

http://api.jquery.com/attr/

在文档

.attr(attributeName, function(index, attr))

attributeName设置属性的名称。

function(index, attr)函数返回值进行设置。这是当前的元素。 接收集合中元素的索引位置和旧属性值作为参数。

2

当jQuery的传递函数来attrcss,传递给函数的第一个参数是当前数组索引,并且第二参数是您要用于设置该属性的当前值当前元素

3

如果提供函数作为attr的第二个参数,则该函数对选择中的每个元素执行一次,并将返回值设置为该元素的属性值。

选择中的位置作为第一个参数传递给回调;该属性的当前值作为第二个参数传递。

$("div").attr("id", function (arr) { 
    return "div-id" + arr; 
}) 

所以这个代码将每div元素div-id加元在选择位置的id。所以第一个将是div-id0,第二个div-id1

这将是更好的命名参数index,而不是混淆arr