【发布时间】:2011-11-16 19:01:07
【问题描述】:
我遇到了一个问题,即我无法删除在我的扩展程序中动态创建的菜单。我可以使用document.getElementById 或使用下面的jquery 东西来获取菜单对象。基本上,用户单击“删除”菜单项,它应该删除父菜单(有 2 个父菜单,因为它进入 menu > popup > menuitem (clicked) )。
Alert 为我要删除的内容吐出正确的 id。 removeObj.remove(); 使扩展程序崩溃。最后一行似乎没有做任何事情(除非第二次单击删除它不再可以找到 id),但它仍然在 UI 中可见。
代码:
var jObj = $(menuObject);
var removeObj = $(jObj).parent().parent();
var id = removeObj.attr('id');
alert(id);
//removeObj.remove();
$(removeObj).parent().removeChild(document.getElementById(id));
这不是由于 jquery。我已经写了这个,它在执行后完全禁用了右键菜单(但在 if-case 中返回正确的 id 位置)
var mainMenu = document.getElementById('rclickMenu_MenuPopupContainer');
var toRemove = document.getElementById("rclickMenu_"+main);
for(var i=0; i < mainMenu.children.length; i++){
if(mainMenu.children[i].getAttribute('id') == toRemove.getAttribute('id')){
alert(toRemove.getAttribute('id'));
//mainMenu.removeItemAt(i);
mainMenu.removeChild(toRemove);
}
}
【问题讨论】:
-
看起来你用的是jQuery代码,但是浏览器代码中不存在jQuery,那你为什么用jQuery代码呢?
-
您可以在代码中包含 jquery 以便能够使用它。即使我不使用它,它也不起作用。前任。 var mainMenu = document.getElementById('mainmenu'); mainMenu.removeChild(document.getElementById('clickeditem'));
-
嗯?你在用jQuery吗?
-
如果你是那么你不应该,这可能就是为什么你的代码 dnw
-
我正在使用 jquery。但即使我不使用它并像我展示的那样使用 document.getElementById,它也不起作用。换句话说,无论我是否使用 jquery,我都无法删除菜单项。你知道怎么去掉吗?
标签: javascript firefox firefox-addon xul