【发布时间】:2022-04-19 16:05:31
【问题描述】:
我正在使用 jQuery 开发一个下拉菜单。我遇到了超时功能根本不起作用的问题。它的代码是:
$(document).ready(function() {
$('.has-sub').hover(
function() {
$('ul', this).stop(true, true).slideDown(500);
},
function() {
$('ul', this).stop(true, true).slideUp(400);
},
function() {
setTimeout(function() {
$('.has-sub').addClass("tap");
}, 2000);
},
function() {
$(this).removeClass("tap");
clearTimeout();
}
);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
我想做的是为下拉菜单的父级创建悬停延迟。您需要将鼠标悬停在父级上 2 秒钟才能显示下拉菜单。我还想将它与 Slidedown 和 Slideup 效果配对。
Slidedown 和 Slideup 功能正常,但 Timeout 不起作用。
【问题讨论】:
-
再一次,阅读documentation 总是有用的......
-
这意味着您使用jQuery的悬停方式错误..而setTimeout属于JS....
-
jQuery 的
.hover()方法只接受1 或2 个函数作为参数。你给它 4。api.jquery.com/hover -
你也可以提供一个HTML吗?
-
@ymz
setTimeout()不是 JavaScript 的一部分。它是宿主环境对象 (window) 的一种方法,但不是 ECMAScript 规范的一部分。
标签: javascript jquery html