【问题标题】:jquery automatic return valuejquery自动返回值
【发布时间】:2011-09-07 17:35:21
【问题描述】:
在这段代码中,函数返回什么?该值被分配给每个 div 的 id 属性。我发现它为第一个 div 返回 div-id0,为第二个 div 返回 div-id1。为什么会这样?
$("div").attr("id", function (arr) {
return "div-id" + arr;
})
【问题讨论】:
-
查看documentation 会发现:.attr( attributeName, function(index, attr) )。所以arr是元素集合中元素的索引。
标签:
javascript
jquery
return
【解决方案1】:
见http://api.jquery.com/attr/
在文档中
.attr( attributeName, function(index, attr) )
attributeName要设置的属性名称。
function(index, attr) 返回要设置的值的函数。这是当前元素。 接收集合中元素的索引位置和旧属性值作为参数。
【解决方案2】:
在jQuery中将函数传递给attr或css时,传递给函数的第一个参数是当前数组索引,第二个参数是你的属性的当前值正在尝试为当前元素设置。
【解决方案3】:
如果您提供一个函数作为attr 的第二个参数,该函数将对选择中的每个元素执行一次,并且返回值设置为该元素的属性值。
选择中的位置作为第一个参数传递给回调;属性的当前值作为第二个参数传递。
$("div").attr("id", function (arr) {
return "div-id" + arr;
})
所以这段代码将每个div 元素的id 设置为div-id 加上该元素在选择中的位置。所以第一个是div-id0,第二个是div-id1,以此类推。
最好将参数命名为index,而不是令人困惑的arr。