如何使用mouseout/mouseleave事件处理程序删除子菜单?
How do i remove the submenu using a mouseout/mouseleave event handler
我试图为菜单项创建一子菜单,我已经创建了一个项目列表,并使用鼠标悬停事件处理程序,但子菜单只是留在那里。我需要它被删除,一旦鼠标清除从子菜单div,而不是标签div。鼠标悬停功能的工作,但鼠标离开我有问题。我是新的使用javascript和DOM
下面是代码(DOM):var creatbtndiv = document.createElement("div");
var creatbtn = document.createElement("button");
creatbtn.innerHTML = "Click Me";
var creatlbl = document.createElement("label");
creatlbl.innerHTML = "Hover Over Me ";
creatbtndiv.appendChild(creatlbl);
creatbtndiv.appendChild(creatbtn);
document.body.appendChild(creatbtndiv);
var list = function () {
var creatDiv = document.createElement("div");
creatDiv.id = "submenudiv";
creatDiv.className = "submenudiv";
var creatul = document.createElement("ul");
for(index = 0; index < 5; ++index){
li = document.createElement("li");
li.className = "list";
li.innerHTML = "Submenu" + index;
creatul.appendChild(li);
}
creatDiv.appendChild(creatul);
document.body.appendChild(creatDiv);
};
//If the cursor hovers over the label, activate this function//
creatlbl.onmouseover = function () {
var alert = confirm("yes master");
list();
};
creatDiv.onmouseout = function(){
var confirm = confirm("the mouse is out");
list.removeChild(creatDiv);
};
creatDiv在它的作用域之外,所以这个函数什么也不做:
creatDiv.onmouseout = function(){
//var confirm = confirm("the mouse is out");
list.removeChild(creatDiv);
};
你可以把这个函数放在后面:
document.body.appendChild(creatDiv);
creatDiv.onmouseout = function(){
//var confirm = confirm("the mouse is out");
this.parentNode.removeChild(this);
};
问题是'creatDiv'在鼠标悬停事件发生之前不存在,从而触发list()函数。
不能将onmouseout事件附加到不存在的creatDiv上。
建议改变:
var list = function () {
var creatDiv = document.createElement("div");
creatDiv.id = "submenudiv";
creatDiv.className = "submenudiv";
var creatul = document.createElement("ul");
for(index = 0; index < 5; ++index){
li = document.createElement("li");
li.className = "list";
li.innerHTML = "Submenu" + index;
creatul.appendChild(li);
}
creatDiv.appendChild(creatul);
document.body.appendChild(creatDiv);
creatDiv.onmouseout = function(){
document.body.removeChild( this )
};
};
这仍然不太正确,因为当您在文本之间移动鼠标时,div会消失,但这是另一个问题。
相关文章:
- 单击删除下拉子菜单
- 删除“;选择“;从下拉菜单的选项中选择
- 如何使用jstree删除上下文菜单中的编辑选项
- 如果今天是会计年度的最后一天,请从下拉菜单中删除当前年份
- 单击“下一个”和“上一个”时,如何从导航菜单中添加和删除类
- 使用Selenium WebDriver单击下拉菜单不会激活Javascript来添加或删除页面中的项目
- 当我的响应菜单打开时,我如何删除用户转到侧面的功能
- 删除二级UL中的“子菜单”类
- 删除其他下拉菜单中的选定项目
- 如何在更改屏幕大小时删除功能(菜单响应)
- 当我单击标记而不是删除它时,我应该做些什么来创建自定义菜单
- 使用 javascript 从选择菜单中删除匹配的选项
- jQuery根据下拉菜单中的选择创建和删除字段
- 单击文本框的右键单击上下文菜单的“删除”后触发的事件
- 如何在 jquery 中删除 UI 选择菜单
- 在给定条件下使用 jquery 删除类,以便对子菜单进行专有对齐
- JQuery 根据单击的菜单项添加/删除类
- 使用JS添加或删除菜单项以下拉屏幕大小
- 在jquery中单击菜单后删除菜单悬停动作
- 删除菜单的标签