javascript - GUI 线程无法使用 jQuery 正确更新

标签 javascript jquery user-interface

我为div“生成板”定义了一个点击事件。当您单击它时,会生成一个随机数独板。问题是我希望 div 在生成板时具有闪烁效果,但在generate_random_board() 函数完成之前它不会闪烁。我在那里放置了一个超时函数,以便 GUI 线程重新获得控制并更新。这适用于更改文本/板输入,但不适用于淡入淡出效果(在 for 循环中)。有谁知道这是为什么以及如何解决它?同样,我只想在“generate_random_board()”函数运行时让 div 闪烁,并在完成后停止。谢谢!

相关代码如下:

$('.generate_board').click(function(){ // generate a random board click
                    $(this).text('Generating Board...');
                    for(i=0;i<3;i++){
                            $(this).fadeTo('slow', 0.5).fadeTo('slow', 1.0);
                    }
                    $('.board_input').val('');
                    $('.sudoku_message_box').text('This uses an NP-hard algorithm, so it can take a while...');
                    window.setTimeout(function(){
                            generate_random_board();
                    }, 30);  
            });

最佳答案

你们的淡入淡出很可能会互相吞噬。相反,尝试以这种方式链接它们:

function fadeInOutSlow( obj, x ){
    obj.fadeTo( 'slow', 0.5, function(){
        obj.fadeTo( 'slow', 1.0, function(){
            if ( ( x-1) > 0 ) fadeInOutSlow( obj, x-1 );
        });
    });
}

$('.generate_board').click(function(){ // generate a random board click
                    $(this).text('Generating Board...');
                    fadeInOutSlow( $(this), 3 );
                    $('.board_input').val('');
                    $('.sudoku_message_box').text('This uses an NP-hard algorithm, so it can take a while...');
                    window.setTimeout(function(){
                            generate_random_board();
                    }, 30);  
            });

关于javascript - GUI 线程无法使用 jQuery 正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9401131/

相关文章:

javascript - 选择所有不包含 "li"的 "ul"

javascript - 使用 jquery 安排约会

javascript - 如果我的 id 包含任何元字符在 Javascript 中的元字符之前附加 '\\'?

javascript - 如何防止使用 jquery 和 socket.io 添加多个事件监听器

javascript - 是否有与 TypeScript 中的 Spread Operator 等效的用于接口(interface)的功能?

javascript - React router v4 - 使用 HOC 的授权路由

javascript - css/javascript : checking pixels of image where hover effect is triggered

python - 如何在 for 循环中创建多个复选框?

java - 可滚动的选项卡内容

c++ - 在 QHBoxLayout 中将小部件添加到屏幕外以便稍后显示