2011-11-16 57 views
1

我遇到了無法刪除在我的擴展程序中動態創建的菜單的問題。我可以通過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); 
        } 
       } 
+0

它看起來像你正在使用jQuery代碼,但瀏覽器代碼中不存在jQuery,那麼爲什麼你使用jQuery代碼? – erikvold

+0

你可以在你的代碼中包含jquery以便能夠使用它。即使我不使用它,它也不起作用。恩。 var mainMenu = document.getElementById('mainmenu'); mainMenu.removeChild(的document.getElementById( 'clickeditem')); – leshow

+0

呵呵?你使用jQuery嗎? – erikvold

回答

0

務必:

​​
+0

這使我的右鍵菜單崩潰,就像我添加到原始問題中的第二位代碼一樣。我不確定爲什麼會發生這種情況。我做的for循環顯示我有正確的根元素,而我試圖刪除的元素是這個子元素,但是當我去實際刪除它時,沒有任何工作。 – leshow

+0

fyi我的擴展程序的菜單是右鍵菜單的子菜單 – leshow

+0

請發送您的擴展代碼請 – erikvold