2011-11-16 2 views
1

내 확장 프로그램에서 동적으로 생성 된 메뉴를 제거 할 수없는 문제가 있습니다. 나는 document.getElementById으로 메뉴 객체를 얻거나 아래에있는 것처럼 jquery 항목을 사용할 수 있습니다. 기본적으로 사용자는 '제거'메뉴 항목을 클릭하고 부모 메뉴를 삭제해야합니다 (메뉴> 팝업> 메뉴 항목 (클릭)되기 때문에 부모가 2 명).동적으로 XUL 메뉴 제거

경고는 내가 제거하고 싶은 것을 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와 때문이 아니다. 나는이 작성하고 완전히 실행 오른쪽 클릭 메뉴를 비활성화합니다 (그러나 만약의 경우에 올바른 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 코드를 사용하는 이유는 무엇입니까? – erikvold

+0

코드를 사용하여 jquery를 사용할 수 있습니다. 비록 내가 그것을 사용하지 않더라도, 그것은 작동하지 않습니다. 전의. var mainMenu = document.getElementById ('mainmenu'); mainMenu.removeChild (document.getElementById ('clickeditem'))); – leshow

+0

? jQuery를 사용하고 있습니까? – erikvold

답변

0

해야 할 것 : 당신이 jQuery 코드를 사용하는 것처럼

let (ele = document.getElementById(id)) { 
    ele.parentNode.removeChild(ele); 
} 
+0

내 오른쪽 클릭 메뉴가 충돌합니다. 원래 질문에 추가 된 코드의 두 번째 비트와 같습니다. 왜 이런 일이 일어나고 있는지 모르겠습니다. for 루프는 내가 올바른 루트 요소를 가지고 있다는 것을 보여 주며, 제거하려고하는 요소는 그 자식입니다. 그러나 실제로 제거하려고하면 아무 것도 작동하지 않습니다. – leshow

+0

fyi 내 확장 프로그램의 메뉴가 오른쪽 클릭 메뉴의 하위 메뉴입니다. – leshow

+0

확장 코드를 게시하십시오. – erikvold

관련 문제