我在一本jQuery书中看到了这个:
$(elems).mouseenter(function(e) {
$(this).css("opacity", 0.5);
}).mouseout(function(e) {
$(this).css("opacity", 1.0);
})
我删除了大部分代码以便于阅读,然后得到了这个:
$(elems).mouseenter(function(e)).mouseout(function(e))
似乎一般情况下你可以这样做?:
$(elems).mouseenter(function(e)).mouseout(function(e)).mouseSOMETHING1(function(e))
使用的另一个词。连接函数?
此外,如果我将此代码分解为:
$(elems).mouseenter(function(e) {$(this).css("opacity", 0.5);});
$(elems).mouseout(function(e) {$(this).css("opacity", 1.0);});
这是一样的吗?
谢谢, 吉姆
答案 0 :(得分:6)
是的,确实如此。 jQuery的一个关键功能正是 chainability 。这是通过在几乎每次调用中返回jQuery对象本身来完成的,允许您将它传递给链的下一个方法。
答案 1 :(得分:2)
你所说的是方法链接,是的,它在jQuery中得到很好的支持。看看这个快速演练:
答案 2 :(得分:2)
它起作用,因为所有这些函数都返回jQuery对象。
$(elems) //return jquery object
.mouseenter(/* ...*/) //return jquery object
.mouseout(/* ..*/) //return jquery object
通过这种方式你可以链接尽可能多的函数。
$(elems).mouseenter(function(e) {$(this).css("opacity", 0.5);});
$(elems).mouseout(function(e) {$(this).css("opacity", 1.0);});
两个方法在功能上都相同..除了第二个方法对get $(elems)
进行不必要的jQuery函数调用。
答案 3 :(得分:1)
是$(elems).mouseenter(function(e)).mouseout(function(e)).mouseSOMETHING1(function(e))
通常是可以接受的,因为jquery函数返回有问题的jquery对象。当你把它写成:
$(elems).mouseenter(function(e) {$(this).css("opacity", 0.5);});
$(elems).mouseout(function(e) {$(this).css("opacity", 1.0);});
这绝对等同于将其写为$(elems).mouseenter().mouseout()