jQuery如何作用于多个选择器?

时间:2011-04-30 12:36:48

标签: javascript jquery chaining

我一直想知道jQuery如何作用于多个选择器。例如:

$("p").css({"border":"1px solid #000"});

在所有p标签上执行后续功能。我已经浏览了jQuery源代码,但说实话,当你试图找出一个特定的功能时,这是一个广泛的阅读。我的假设是存在某种堆栈,其中css()和其他函数仅仅作用于当前堆栈,由选择器函数来判断。

除此之外,我无法弄清楚它是如何被复制的,我认为,javascript中没有办法返回多个对象来执行函数。 E.g。

House.first_bedroom.size = "large"
House.second_bedroom.size = "small"
House.all_rooms().alertSize();

alertSize()必须是某些对象集合的成员函数,而不是all_rooms()返回的每个房间对象的成员函数?

3 个答案:

答案 0 :(得分:3)

首先,jQuery函数(通常)返回一个jQuery对象,它像一个数组,并跟踪当前匹配元素集。其次,内部每个jQuery函数都广泛使用each()函数来迭代匹配的对象,执行后续操作并构造要返回的新jQuery对象。有些函数会返回jQuery之外的其他函数,比如get()。这些功能无法链接。只有在函数返回jQuery对象时才能进行链接。因为返回的对象是一个jQuery对象,所以它具有jQuery的所有功能。

答案 1 :(得分:1)

jquery构造函数($(...))总是返回一个jquery对象。你可以把它想象成一个花哨的阵列。选择的项目被存储(看起来在源中称为上下文)。

然后在您的对象上调用函数css ...请参阅源代码中的jQuery.fn.css。它基本上调用一个函数来执行上下文中每个项目的委托(设置或获取css)。

答案 2 :(得分:0)

也许解析了DOM并且所有符合条件的元素都被添加到数组中?或者..更高效的东西? :)

同样,对于事件处理,是否为数组中的每个元素分配了一个处理程序?

我只是在黑暗中刺伤。