0

我有这段代码,在将类添加到其中之后我需要对其进行处理,但该函数有时会在添加类之前运行,从而导致问题。我试图在添加类之后提供回调,然后运行函数。如果可能的话,我想在不使用的情况下做到这一点setTimeout

这是一段代码:

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

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

2 回答 2

1
$('.item').on('click', '.add-class', function () {
    $(this).parents('.box').addClass('active');
    setTimeout(function () {
        runInit();
    }, 1);
});
于 2013-07-13T00:37:17.597 回答
1

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

$( '.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();
});

这第二个选项可能是您正在寻找的。

于 2013-07-13T00:39:15.630 回答