1

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

4 に答える 4

6

はい、そうです。jQuery の重要な機能の 1 つは、まさに連鎖可能性です。これは、ほぼすべての呼び出しで jQuery オブジェクト自体を返すことによって行われ、チェーンの次のメソッドに渡すことができます。

于 2012-08-29T21:43:00.337 に答える
2

あなたが話しているのはメソッドチェーンと呼ばれ、はい、jQueryで十分にサポートされています。この簡単なチュートリアルをご覧ください。

メソッドチェーン - 完全な jQuery チュートリアル

于 2012-08-29T21:44:25.253 に答える
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);});

両方のメソッドは機能的に同じです.. 2 番目のメソッドが get への不要な jQuery 関数呼び出しを行うことを除いて$(elems)

于 2012-08-29T21:44:26.653 に答える
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()

于 2012-08-29T21:45:13.797 に答える