javascript - 无法让 setTimeout 在 javascript 中工作

标签 javascript jquery jquery-ui settimeout

我正在使用 jquery 在 div 中上下滑动。

由于某些原因 setTimeout 不工作(看起来像函数范围问题)。

无法弄清楚下面的代码有什么问题。 (这两个函数都在 $(document).ready(function(){ } )

$('.slider-thumb').click(function(){
    var source = $(this).attr("src");
    $('#image_view').css('background-image',"url("+source+")");
    $('#image_view').slideDown(1000, calbck);
    initiate_timeout();

    function calbck(){}
});

function initiate_timeout(){
    var time_out = setTimeout(function() {
        $('#image_view').slideUp(1000, calbck);
    },2000);
}

最佳答案

缩进源代码表明您确实存在一些范围界定问题。 calbck 函数是点击处理函数私有(private)的,因此对于 initiate_timeout 函数是不可见的。要么使 calbck 成为顶级函数,要么使 initiate_timeout 成为点击处理函数的局部函数。

$('.slider-thumb').click(function() {
    var source = $(this).attr("src");
    $('#image_view').css('background-image',"url("+source+")");
    $('#image_view').slideDown(1000, calbck);
    initiate_timeout();

    function calbck(){}
});

function initiate_timeout(){
    var time_out = setTimeout(function() {
        $('#image_view').slideUp(1000, calbck);
        }, 2000);
}

关于javascript - 无法让 setTimeout 在 javascript 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7029946/

相关文章:

javascript - 如何在 JS 中映射对象数组并为每个对象获取网络数据?

javascript - 如何在 UI Router 中重构单独状态和抽象状态?

javascript - 在事件/回调驱动的 JavaScript 应用程序中管理 "this"

jquery datepicker - 覆盖数据属性中的选项

javascript - 替换Javascript中URL中所有匹配的查询参数值

javascript - 重新绘制谷歌地图以查看隐藏的移动标记

javascript - 过渡不适用于 addClass 和 RemoveClass

javascript - GA 事件跟踪嵌入式表单小部件

jquery - 使用 jQuery 从 Teamweek 获取项目

javascript - jQuery UI Slider : Range with 3 handles, 和可配置的颜色?