8

我正在从一本名为Head First jQuery 的书中学习 jQuery。这本书很容易学习。关键是,有一个.each()函数(包含在我从 扫描的图像中),它有一个 function() 参数。function() 参数是indexvalue。索引在页面上有说明,但是值呢?而且,由于它是一个匿名函数(不能重用),它如何接受任何参数?

4

2 回答 2

19

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 is 0”和“Sampson is 1”,因为我们使用的是从零开始的索引。

但是我们的原生 jQuery 对象呢?

$("p").each(function(index, value){
    alert( value.textContent ); // The text from within the paragraph
});

在这种情况下,value是一个实际的对象,所以如果我们愿意,我们可以访问类似或的HTMLParagraphElement属性:textContentinnerText

于 2012-06-11T08:35:00.277 回答
1

您称为 value 的第二个参数是每个函数当前处理的集合的值。

对于您的第二个问题 - 可以重用匿名函数,仅仅因为它们没有名称并不意味着它们不能有参数或被执行。请参见以下示例:

function execute_fn(fn) {
  fn(1,2);
}

execute_fn(function(a,b) { ... });
于 2012-06-10T12:49:33.740 回答