我遇到了無法刪除在我的擴展程序中動態創建的菜單的問題。我可以通過document.getElementById
獲得菜單對象,或者使用像我這樣的jQuery的東西。基本上,用戶點擊'刪除'菜單項,它應該刪除父菜單(有2個父母,因爲它去菜單>彈出> menuitem(點擊))。動態刪除XUL菜單
警報吐出適當的id
爲我想要刪除。 removeObj.remove();
崩潰擴展名。最後一行似乎沒有任何作用(除非再次點擊刪除它不再能找到id
),但它仍然可以在用戶界面中看到。
代碼:
var jObj = $(menuObject);
var removeObj = $(jObj).parent().parent();
var id = removeObj.attr('id');
alert(id);
//removeObj.remove();
$(removeObj).parent().removeChild(document.getElementById(id));
這不是因爲jQuery的。我寫了這一點,它完全禁用執行後的右鍵菜單(但如果情況返回正確的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代碼? – erikvold
你可以在你的代碼中包含jquery以便能夠使用它。即使我不使用它,它也不起作用。恩。 var mainMenu = document.getElementById('mainmenu'); mainMenu.removeChild(的document.getElementById( 'clickeditem')); – leshow
呵呵?你使用jQuery嗎? – erikvold