我有这个代码,我需要在添加一个类之后用它做一些事情,但函数有时会在添加类之前运行导致问题。我试图在添加类之后提供回调,然后运行函数。如果可能,我想在不使用setTimeout
的情况下执行此操作。
以下是一段代码:
$( '.item' ).on( 'click', '.add-class', function() {
$( this ).parents( '.box' ).addClass( 'active' );
runInit(); // sometimes run before above class is added
} );
答案 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();
});
这第二个选项可能就是你要找的。 p>