如何为点击功能提供回调?

时间:2013-07-13 00:33:47

标签: jquery

我有这个代码,我需要在添加一个类之后用它做一些事情,但函数有时会在添加类之前运行导致问题。我试图在添加类之后提供回调,然后运行函数。如果可能,我想在不使用setTimeout的情况下执行此操作。

以下是一段代码:

$( '.item' ).on( 'click', '.add-class', function() {
     $( this ).parents( '.box' ).addClass( 'active' );

     runInit(); // sometimes run before above class is added
} );

2 个答案:

答案 0 :(得分:1)

$('.item').on('click', '.add-class', function () {
    $(this).parents('.box').addClass('active');
    setTimeout(function () {
        runInit();
    }, 1);
});

答案 1 :(得分:1)

您可以在hasClass函数定义中检查runInit()http://api.jquery.com/hasClass/),也可以在添加类之后触发新事件,如下所示:

$( '.item' ).on( 'click', '.add-class', function() {
     $( this ).parents( '.box' ).addClass( 'active' ).trigger('boxClassChanged');

     runInit(); // sometimes run before above class is added
} );

// Use your selector here in place of '.box'
$('.box').on('boxClassChanged', function() {
    runInit();
});

这第二个选项可能就是你要找的。