我正在使用addEventListener进行滑动菜单,通过它我可以在单击项目时显示菜单的隐藏部分。但是,当再次点击该项目时,再次滑动的过程重新开始。有什么办法可以防止侦听者执行正在执行的代码吗?有没有什么办法可以防止EventListener在执行时执行代码?
var menuItemHidden = document.getElementById("hidden");
// Unrolling
function unroll() {
var height = 0;
var unroll1 = function() {
height = height + 1;
menuItem.style.height = height + "px";
if (height == 100) {
clearInterval(i);
}
};
d.unrolling = "rolling";
var i = window.setInterval(unroll1,1);
}
var menuItem = document.getElementsByTagName("li");
// I would like to prevent this code from being executed when it is currently
// running, is there any way to achieve this?
menuItem[2].addEventListener("click",unroll,true);
难道你不能用CSS做这个吗?如果您可以发布一些HTML,我可以看看您的情况是否可行,因为使用CSS可以更容易:'#hidden:active〜#menuItem,#menuItem:hover {height:100px;}'用于设置高度,如你想动态做的那样:'#menuItem {transition:height .1s ease;}'做平滑。 – MarijnS95
刚做了一个[** demo **](http://jsfiddle.net/tb3S8/),表明你可以使用CSS做得更好更干净。 – MarijnS95
是的,我知道这可以用CSS来实现,而且这种方法更简单,更清晰,我只是想用JavaScript来尝试它,无论如何都要付出努力。 :) – user3104270