我觉得这个答案很简单,但我无法弄清楚甚至要搜索什么。
我想要做的是让一个.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标记只是地标选择器。
答案 0 :(得分:6)
您可以传递一个按顺序调用两个函数的处理程序。
为了正确绑定this
,您必须使用call()或apply()来调用它们:
$("#div").click(function() {
function1.call(this);
function2.call(this);
});
如果您像其他答案那样“自然地”调用这些功能,那么function1()
和function2()
this
内的window
将被绑定到undefined
(或{{1}在严格模式下),而不是被点击的元素,所以它们不会像你期望的那样表现。
答案 1 :(得分:0)
这对你有用 - 试试吧。
$(selectorForButton).click(
function(e){
function1();
function2();
});
答案 2 :(得分: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