웹마스터 팁
관리자설정-> 관리자 메뉴설정 에서 삭제가 안 되는 현상 수정하는 방법
2014.08.11 17:25
원본출처 : http://sejin7940.co.kr/index.php?mid=xe_tips&document_srl=100405
1.8 쯤에는 업데이트 되어 버그 픽스 될거라고 예상하지만
혹시 그 이전버전을 사용하면서 이 문제가 발생하면 아래처럼 수정하시면 됩니다
--------------------------------------------------------------------
관리자페이지->관리자설정-> 관리자메뉴설정 에서 삭제가 안 되는 현상 수정하는 방법
수정방법은.
modules/admin/tpl/js/menu_setup.js 에서 45번째줄 즈음의
var menu_item_srl = $(this).parents('li').find('._item_key').val();
를 아래걸로 바꾸면 된다
var menu_item_srl = $(this).closest('li').find('._item_key').val();
혹시나 이걸로 안 고쳐질경우
menu_setup.min.js 에서 관련부분 찾아서 고치시면 됩니다.
원인은 jquery 에서 parents() 를 사용해서이다. parents 는 최상위부터 다 검토하게 되는데, 동일하 li._item_key 형태가 1차 / 2차 형태에 둘 다 나오다보니
정작 jquery 로 menu_item_srl 값을 넣을때 삭제버튼을 눌렀던 해당 2차 메뉴의 값이 들어가는게 아니라 그 상위의 1차 메뉴 값이 들어가면서...
삭제하면 무조건 '하위메뉴가 존재하여 삭제할 수 없습니다' 라는 메세지가 나오게 되는 것이다
결국, parents 대신에 closest 를 사용하면 된다.
이 둘의 차이는, http://findfun.tistory.com/183 를 참조해서 보면 된다
(쉽게 설명해 closest 는 해당 현재 요소에서부터 차례대로 부모를 찾아 올라가게 된다. 즉, 삭제버튼 있는 곳에서부터 찾으니 2차 메뉴의 li._item_key 가 된다)
저는 위에서 말씀해 주신대로 menu_setup.min.js 를 고치니깐 정상적으로 메뉴가 삭제 되었습니다. 감사합니다! 사용상 문제가 없어서 방치해 두고 있었는데 그동안 왜 안 지워지나 했었습니다... ^^