我有这个js函数:
$('#linkNext').on({
mouseenter: function () {
if ($('#conteudo .boxes').hasClass('ativo')) {
$('#conteudo .boxes').removeClass('ativo');
$('.boxAberto').animate({width: '0'}, 600, function () {
// callback
$('#linkNext').hover(function () {
this.iid = setInterval(function () {
if (cont > -565) {
cont -= 5;
$('#conteudo').attr('style', 'left:' + cont + 'px');
console.log(cont)
}
if (cont <= -565) {
$('#linkNext').hide();
}
}, 0);
});
$('#linkNext').mouseleave(function () {
this.iid && clearInterval(this.iid);
});
// callback ends
});
} else {
this.iid = setInterval(function () {
if (cont > -565) {
cont -= 5;
$('#conteudo').attr('style', 'left:' + cont + 'px');
console.log(cont)
}
if (cont <= -565) {
$('#linkNext').hide();
}
}, 0);
}
},
mouseleave: function () {
this.iid && clearInterval(this.iid);
}
});
在鼠标悬停时,它会检查元素是否具有 class .ativo
。如果有,它将删除该类并为元素设置动画并请求回调。回调不起作用,我认为我使用.hover
错误的方式。
else
它将开始一个setInterval
运行良好的功能,功能也是如此mouseleave
。我遇到的问题只是回调,我不知道我做错了什么
*编辑**
现在我更改了代码,只使用.hover
with 回调而不是使用.on
with mouseenter mouseleave
。但我仍然有同样的问题。线上方的回调// callback
不起作用..
$('#linkNext').hover(function () {
if ($('#conteudo .boxes').hasClass('ativo')) {
$('#conteudo .boxes').removeClass('ativo');
$('.boxAberto').animate({width: '0'}, 600, function () {
// callback
if ($('#conteudo .boxes:not(.ativo)')) {
$('#linkNext').hover(function () {
this.iid = setInterval(function () {
if (cont > -565) {
cont -= 5;
$('#conteudo').attr('style', 'left:' + cont + 'px');
console.log(cont)
}
if (cont <= -565) {
$('#linkNext').hide();
}
}, 0);
}, function () {
this.iid && clearInterval(this.iid);
});
}
});
} else {
this.iid = setInterval(function () {
if (cont > -565) {
cont -= 5;
$('#conteudo').attr('style', 'left:' + cont + 'px');
console.log(cont)
}
if (cont <= -565) {
$('#linkNext').hide();
}
}, 0);
}
}, function () {
this.iid && clearInterval(this.iid);
});