我正在从一本名为Head First jQuery的书中学习jQuery。这本书很容易学习。关键是,有一个.each()
函数(包含在我从中扫描的图像中),它有一个function()参数。 function()参数是index
和value
。索引在页面上解释,但值是什么?而且,由于它是一个匿名函数(不能重复使用),它如何采用任何参数?
答案 0 :(得分:18)
jQuery中有两个each
方法。一个用于循环包含许多匹配的jQuery对象。例如,假设我们想在页面上找到所有段落:
$("p").each(function(){
// Do something with each paragraph
});
其次,有一个更通用的each
用于迭代对象或数组:
var names = ["Jonathan", "Sampson"];
$.each(names, function(){
// Do something with each name
});
当jQuery循环遍历其中任何一个示例中的元素时,它会统计它当前正在处理的对象。当它执行我们的匿名函数时,它会传递两个参数 - 我们正在使用的当前值(索引)和该对象(值)。
var names = ["Jonathan", "Sampson"];
$.each(names, function(index, value){
alert( value + " is " + index );
});
由于我们使用的是从零开始的索引,因此输出“Jonathan为0”,“Sampson为1”。
但是我们的原生jQuery对象呢?
$("p").each(function(index, value){
alert( value.textContent ); // The text from within the paragraph
});
在这种情况下,value
是一个实际的HTMLParagraphElement
对象,因此如果我们愿意,我们可以访问textContent
或innerText
等属性:
答案 1 :(得分:1)
您称之为值的第二个paremter是当前由每个函数处理的集合的值。
对于你的第二个问题 - 匿名函数可以重用,只是因为它们没有名称并不意味着它们不能有参数或被执行。请参阅以下示例:
function execute_fn(fn) {
fn(1,2);
}
execute_fn(function(a,b) { ... });