0

いくつかのアニメーションを実行する JavaScript 関数があり、そのパラメーターは親セレクターです。

function myFunction(a)
{
$("'"+a+">#one'").stop(true, true).animate({left:'30px'},1100);
$("'"+a+">#two'").stop(true, true).animate({left:'30px'},1100);
}

次の行はその関数を呼び出しています。

$("#main").mouseleave(myFunction("#main"));

しかし、これは機能していません。誰かが私のコードで何が間違っているのか教えてもらえますか?

4

6 に答える 6

1

セレクターが正しく連結されていません。jquery 関数は、セレクター引数として文字列を受け取ります。一重引用符で囲む必要はありません。

function myFunction(a)
{
    $(a+">#one").stop(true, true).animate({left:'30px'},1100);
    $(a+">#two").stop(true, true).animate({left:'30px'},1100);
}
于 2013-05-05T18:38:51.570 に答える
1

mouseLeave関数は、関数をパラメーターとして受け取ります。実行された関数 (パラメーターを持つ関数) を渡しているため、関数の結果がパラメーターとしてmouseLeave(関数自体ではなく) に渡されます。

myFunction新しい匿名関数で関数を呼び出す別の関数をラップする必要があります。

作品が正しいと仮定すると、次のmyFunctionようなものが必要です。

$("#main").mouseleave(new function() {
    myFunction("#main");
});
于 2013-05-05T18:40:13.537 に答える
0

これを試して -

$(a+" > #one").stop(true, true).animate({left:'30px'},1100);
$(a+" > #two").stop(true, true).animate({left:'30px'},1100);
于 2013-05-05T18:39:22.217 に答える