2

この答えは非常に単純なものになると思いますが、何を検索すればよいかわかりません。

私がやりたいのは、1 つの .click() イベントで 2 つの関数を順番に起動することです。関数 1 は意図した領域をクリアし、次に関数 2 が .slideDown() になるはずです。

    function function1(){
    $(this).parents('#div').siblings().nextAll('#div').hide();
    };

function function2(){
    $(this).parents('#div').siblings().nextAll('#div').slideDown(1000);
    };

$("#div").click(function1 + function2);

私は次のことを試みましたが、役に立ちませんでした...

    $("#div").click(function1, function2);
    $("#div").click(function1,function2);
    $("#div").click(function1 + function2);
    $("#div").click(function1+function2);

function1 と function2 を個別に起動すると、正しく動作します。一緒に発砲しようとしたときだけです。

事前にどうもありがとうございました!

編集:ああ、#div マーカーはプレースマーカー セレクターのみです。

4

3 に答える 3

6

2 つの関数を順番に呼び出すハンドラーを渡すことができます。

ただし、適切thisにバインドするには、call()またはapply()を使用してそれらを呼び出す必要があります。

$("#div").click(function() {
    function1.call(this);
    function2.call(this);
});

他の回答がそうであるように、関数を「自然に」呼び出すと、クリックされた要素ではなく、内側function1()function2() thisバインドされてwindow(またはundefined厳密モードで)バインドされるため、期待どおりに動作しません。

于 2013-01-03T07:13:06.937 に答える
0

callback次のようにを使用する必要があります。

$(document).ready(function(){
    $('#test').click(function(){
        one();
        two();
    });
});



function one(){
    alert("I am function one");
}

function two(){
    alert("I am function two");
}

これが動作中のJSFiddleです

于 2013-01-03T07:17:58.507 に答える
0

これでうまくいきます - 試してみてください。

$(selectorForButton).click(
  function(e){
    function1();
    function2();
 });
于 2013-01-03T07:11:56.507 に答える