1 回答
TA贡献1795条经验 获得超7个赞
看起来您需要if ($('#rotators').data('clicked')) {在setInterval函数内部移动块。这样做的原因是 if/else 在页面加载时被评估,因此它会立即被评估,$('#rotators').data('clicked') === undefined并因此setInterval永久触发该函数。
如果您在setInterval函数内移动 if/else 子句,它将每 500 毫秒检查一次该元素是否已被单击。
下面的代码似乎实现了你想要的:
$(document).ready(function() {
$("#rotators").click(function() {
$(this).data('clicked', true);
});
setInterval(function() {
if ($('#rotators').data('clicked'))
{
$("#rotators").css({
"overflow": "auto"
});
$("#rotators").css({
"height": "auto"
});
}
else if ($("#rotatelist > a:last").is(":visible"))
{
$("#rotatelist a:last").after($("#rotatelist a:first"));
$("#rotators").css({
"overflow": "hidden"
});
$("#rotators").css({
"height": "30px"
});
}
}, 500);
});
正如罗里在评论中所说
事实上,如果你在问题中描述你的目标可能会更容易,因为我确信有更好的方法来实现它
您的问题可能是XY 问题的一个示例- 可能值得解释您尝试使用上述代码实现的目标。无论哪种方式,我希望我的回答对您的理解有所帮助。
编辑:在看到您想要的目标后,这是您正在寻找的事情吗:使列表垂直?https://jsfiddle.net/0kn72ofp/
目前您的链接列表不会一次旋转一个,它似乎一次移动几个字符。如果您希望它一次旋转一个链接,我建议您查看 jQuery UI 的 Slide 或 slideToggle 效果之类的东西。
添加回答
举报