这段代码如何工作? (jQuery链接)

时间:2016-06-19 08:59:31

标签: javascript jquery chaining

我从jQuery插件教程中获得了这段代码。但是,我的问题是javascript/jquery问题。

在代码中,您可以看到filter()返回一个对象,该对象包含“已过滤”对象的集合。并且append()正在操纵它。

我要问的是:append函数如何操作所有元素,而不是只对返回的对象进行一次操作?

this.filter( "a" ).append(function() {
   return " (" + this.href + ")";
});

1 个答案:

答案 0 :(得分:1)

这是由于append(function)的性质以及初始this与代码中函数内部的append(function)之间的范围差异。

根据http://api.jquery.com/append/#append-function的jQuery文档,this对“匹配元素集合中的每个元素进行操作。[...]在函数内,this.filter("a")引用当前元素在集合中。“

因此,在您的代码中,this.href是一个包含任何匹配元素的jQuery对象,而函数内的Short.toUnsignedInt本身在迭代通过集合时依次表示每个元素。因此,文本将附加到所有匹配元素。