2

我觉得这个答案会很简单,但我什至不知道要搜索什么。

我想做的是让一个 .click() 事件依次触发两个函数。Function1 清除预期区域,然后 function2 应该是 .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

您可以传递一个按顺序调用您的两个函数的处理程序。

但是,为了this正确绑定,您必须使用call()apply()来调用它们:

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

如果您像其他答案一样“自然地”调用函数,那么在内部function1()并且function2() this将被绑定到window(或undefined在严格模式下),而不是被单击的元素,因此它们不会像您期望的那样运行。

于 2013-01-03T07:13:06.937 回答
0

这对你有用 - 试试看。

$(selectorForButton).click(
  function(e){
    function1();
    function2();
 });
于 2013-01-03T07:11:56.507 回答
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 回答