Javascript SetTimeout在jQuery中无法正常工作

Javascript SetTimeout在jQuery中无法正常工作,javascript,jquery,html,Javascript,Jquery,Html,。 如果我在每个图像上按住鼠标,我希望图像在一秒钟后变大,但是设置超时没有响应。即使我将alert()函数放在menuChanging()函数的开头,它也会运行,但我的其余代码不会执行(它会立即运行,不会在一秒钟后运行)。鼠标悬停时,您会立即调用函数menuChanging,相反,您需要将函数引用传递给setTimeout $(函数(){ $(“.hormenu>div”).hover(函数(){ $(this).data('hoverTimer',setTimeout(menuChangin


如果我在每个图像上按住鼠标,我希望图像在一秒钟后变大,但是
设置超时没有响应。即使我将
alert()
函数放在
menuChanging()
函数的开头,它也会运行,但我的其余代码不会执行(它会立即运行,不会在一秒钟后运行)。

鼠标悬停时,您会立即调用函数
menuChanging
,相反,您需要将函数引用传递给setTimeout

$(函数(){
$(“.hormenu>div”).hover(函数(){
$(this).data('hoverTimer',setTimeout(menuChanging.bind(this),1000));
},函数(){
var$this=$(this);
//如果您在1s前离开,请清除计时器
clearTimeout($this.data('hoverTimer'));
//当鼠标移出时,如果需要,请恢复到初始状态
if($this.hasClass('current')){
$this.toggleClass(“当前其他”).animate({
宽度:“100px”,
不透明度:“0.5”
},750,“弹性反弹”);
}
});
});
函数menuChanging(){
var持续时间=750;
$(“.hormenu>.current”)。不是(这个)。切换类(“当前其他”)。设置动画({
宽度:“100px”,
不透明度:“0.5”
},持续时间,'easeOutBounce');
$(this).removeClass(“其他”).addClass(“当前”).animate({
宽度:“600px”,
不透明度:“1”
},持续时间,'easeOutBounce');
}
.hormenu{
高度:500px;
宽度:1800px;
}
img{
身高:100%;
宽度:100%;
}
1.Hormuen div{
宽度:100px;
溢出:隐藏;
显示:块;
浮动:左;
身高:100%;
}
.其他{
不透明度:0.5;
}
img{
宽度:600px;
}

鼠标悬停时立即调用函数
menuChanging
,需要将函数引用传递给setTimeout

$(函数(){
$(“.hormenu>div”).hover(函数(){
$(this).data('hoverTimer',setTimeout(menuChanging.bind(this),1000));
},函数(){
var$this=$(this);
//如果您在1s前离开,请清除计时器
clearTimeout($this.data('hoverTimer'));
//当鼠标移出时,如果需要,请恢复到初始状态
if($this.hasClass('current')){
$this.toggleClass(“当前其他”).animate({
宽度:“100px”,
不透明度:“0.5”
},750,“弹性反弹”);
}
});
});
函数menuChanging(){
var持续时间=750;
$(“.hormenu>.current”)。不是(这个)。切换类(“当前其他”)。设置动画({
宽度:“100px”,
不透明度:“0.5”
},持续时间,'easeOutBounce');
$(this).removeClass(“其他”).addClass(“当前”).animate({
宽度:“600px”,
不透明度:“1”
},持续时间,'easeOutBounce');
}
.hormenu{
高度:500px;
宽度:1800px;
}
img{
身高:100%;
宽度:100%;
}
1.Hormuen div{
宽度:100px;
溢出:隐藏;
显示:块;
浮动:左;
身高:100%;
}
.其他{
不透明度:0.5;
}
img{
宽度:600px;
}

在这里,您可以找到问题的解决方案

$(function(){
    $(".hormenu div").mouseover(
        function()
        {
            setTimeout(menuChanging($(this)),1000);
        }
        );
});

function menuChanging(div) {
    return function(){
        var duration = 750 ;
        if (!div.hasClass("current")) {
            $(".current").removeClass("current").addClass("other").animate({
                width: "100px",
                opacity: "0.5"
            }, duration, 'easeOutBounce');
        }
        div.removeClass("other").addClass("current").animate({
            width: "600px",
            opacity: "1"
        }, duration, 'easeOutBounce');
    }
}


您正在调用函数,但没有将其传递给setTimeout。我还更改了一些内容,以便轻松检索div。新函数返回一个要调用的函数,此新函数可以访问第一个函数的参数。

在这里,您可以找到问题的解决方案

$(function(){
    $(".hormenu div").mouseover(
        function()
        {
            setTimeout(menuChanging($(this)),1000);
        }
        );
});

function menuChanging(div) {
    return function(){
        var duration = 750 ;
        if (!div.hasClass("current")) {
            $(".current").removeClass("current").addClass("other").animate({
                width: "100px",
                opacity: "0.5"
            }, duration, 'easeOutBounce');
        }
        div.removeClass("other").addClass("current").animate({
            width: "600px",
            opacity: "1"
        }, duration, 'easeOutBounce');
    }
}


您正在调用函数,但没有将其传递给setTimeout。我还更改了一些内容,以便轻松检索div。新函数返回一个要调用的函数,此新函数可以访问第一个函数的参数。

需要共享有问题的代码我尝试这样做,但我不需要共享有问题的代码我尝试这样做,但我无法告诉我应该编写什么?你能告诉我吗告诉我我应该写什么?