jquery函数上的点符号?

时间:2012-08-29 21:39:56

标签: jquery

我在一本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);});

这是一样的吗?

谢谢, 吉姆

4 个答案:

答案 0 :(得分:6)

是的,确实如此。 jQuery的一个关键功能正是 chainability 。这是通过在几乎每次调用中返回jQuery对象本身来完成的,允许您将它传递给链的下一个方法。

答案 1 :(得分:2)

你所说的是方法链接,是的,它在jQuery中得到很好的支持。看看这个快速演练:

Method chaining - The complete jQuery tutorial

答案 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()