回调jQuery .on方法

时间:2017-04-20 05:50:38

标签: javascript jquery

我可以用setTimeout实现我想要的东西:

$('#container').on('click', '#target', function() {
    // do stuff ...

    // ... then:
    setTimeout(function(){
        // do more stuff
    }, 300);
});

...但我想知道是否有办法使用在事件功能完成后调用的回调?

3 个答案:

答案 0 :(得分:4)

您可以使用jQuery.Deferred()

$('#container').on('click', '#target', function() {
    // do stuff ...
    function doStuff(deferred) {
      // do stuff
      return deferred.resolve()
    }
    function doMoreStuff() {
        // do more stuff
    }
    var dfd = new $.Deferred(doStuff);
    // ... then:
    dfd.then(doMoreStuff);

});

答案 1 :(得分:1)

如果您不想使用回调或承诺,可以绑定目标以在触发器上运行,然后在您需要时触发该行为。

{'desc': "Can't contact LDAP server"}

Here is a simple jsfiddle example

答案 2 :(得分:1)

如果您在css transition完成时尝试调用某个函数,请使用transitionend事件

$("#elementWhereCSSTransitionsApplied").on("transitionend", doStuff);

或将元素动态追加到document

$("#parentElementOfWhereCSSTransitionsApplied")
.on("transitionend", ".elementWhereCSSTransitionsApplied", doStuff);