1

我正在尝试在执行回调后执行一个函数。

这是我的例子

var callback1 = function () {
  // check input ($(this).val()) for validity here
};
var callback2 = function () {
 // make other things after callback1 has finished
};

$("input[type='text']").change(callback1);

然后当 callback1 被执行时,我想执行 callback2。
使用 jquery/javascript 执行此操作的正确方法是什么

4

8 回答 8

2

您可以使用匿名函数并在其中包含两个回调。

$("input[type='text']").change(function(){ 
  callback1();
  callback2();
});
于 2012-10-12T08:36:16.993 回答
2

只需执行以下操作:

$("input[type='text']").change(function() {
    callback1();
    callback2();
});
于 2012-10-12T08:37:00.677 回答
2

您可以像这样分配多个回调:

$('input ...')
    .on('change', callback1)
    .on('change', callback2)

其他答案的编写方式有一个区别(即使用迭代运行两个回调的匿名函数)。考虑这段代码:

function callback1(evt) {
    // check input ($(this).val()) for validity here

    // stop any other handlers from running
    evt.stopPropagation();
}

function callback2() {
    // make other things after callback1 has finished
}

您可以通过调用防止callback2从内部执行(我认为返回会完成同样的事情)。这是需要牢记的。callback1evt.stopPropagation()false

于 2012-10-12T08:37:08.193 回答
1

callback2在结束时执行callback1

var callback1 = function () {
    // check input ($(this).val()) for validity here
    callback2();
};
var callback2 = function () {
    // make other things after callback1 has finished
};

$("input[type='text']").change(callback1);

或者,如果您想让它们完全独立,您可以将一个函数传递给change()单独调用回调的事件:

var callback1 = function () { /* code */ };
var callback2 = function () { /* code */ };
$("input[type='text']").change(function() {
    callback1();
    callback2();
});
于 2012-10-12T08:36:17.570 回答
1

在另一个匿名函数中调用这两个回调函数:

$("input[type='text']").change(function() {
    callback1;
    callback2;
});
于 2012-10-12T08:36:35.787 回答
0
  1. 创建一个执行 cb1 和 cb2 代码的唯一回调。

  2. 从 cb1 内部调用 cb2。

于 2012-10-12T08:37:13.900 回答
0

用这个:

var callback1 = function () {
  // check input ($(this).val()) for validity here
};
var callback2 = function () {
 // make other things after callback1 has finished
};
$('input[type="text"]').change(function() {
    callback1();
    callback2();
});
于 2012-10-12T08:37:41.987 回答
0

使用返回函数的函数来做。

var callback1 = function (my_callback) {
  return function(){
    // check input ($(this).val()) for validity here
    //   ...
    my_callback();
  }
};
var callback2 = function () {
 // make other things after callback1 has finished
};

$("input[type='text']").change(callback1(callback2));
于 2012-10-12T08:39:07.757 回答