我有一个功能可以在悬停时禁用第一次单击时的链接操作,然后在第二次单击时允许链接操作:
<script type="text/javascript">
$('document').ready(function () {
$("#menu ul > li").hover(function () {
i = 1;
if ($('div', this).children().size() > 0) {
$('.drop', this).addClass("locked");
}
$('.locked').click(function () {
if (i < 2) {
i++;
console.log("if 1 i = ", i);
return false;
} else {
i = 1;
console.log("if 2 i = ", i);
}
});
clearTimeout($.data(this, 'timer'));
$('div', this).stop(true, true).delay(300).slideDown(200);
}, function () {
$.data(this, 'timer', setTimeout($.proxy(function () {}, this), 100));
$('div', this).stop(true, true).slideUp(100);
$('.drop', this).removeClass("locked");
i = 1;
});
});
</script>
在第一次悬停时,该功能可以正常工作,但是如果我让该功能运行而无需单击,则将鼠标移出悬停元素,然后返回并再次“放下”菜单,如果在 .click 中停止工作。在控制台中,似乎 if 子句只是被直接循环。任何想法为什么?