javascript 및 jQuery를 사용하여 기존 요소 <div>
에 새로운 요소를 동적으로 추가 및 삭제합니다.하위 요소 추가/제거
새 요소를 추가해도 잘 작동하지만 '삭제'를 클릭하여 요소를 제거하면 주 컨테이너 객체가 생기고 버튼 내에있는 자식 요소 객체도 존재하고 클릭됩니다.
이제 요소를 삭제하려고 할 때 문제가 발생합니다. 컨트롤을 포함하는 html 테이블 컨트롤까지 개체를 가져 오는 중 테이블을 포함하는 div를 가져 오지 못합니다.
참고 : div에는 하위 div/요소가 포함되어 있습니다.
자바 스크립트
var ab = '<table rules="none" width="100%">'+
'<tr>'+
'<td class="optHdBg">'+
'<a><img src="themes/theme_blog/images/icons/delete.png" name="delete" önclick="javascript:remove_block(this);"/></a>'+
'</td></tr></table>';
function add()
{
var lstChild = $("#contControls").children().last();
var containerElement = document.getElementById("contControls");
var newElement = document.createElement("div");
$(newElement).addClass("optionPane");
newElement.innerHTML = ab;
document.getElementById("contControls").appendChild(newElement);
}
function remove_block(obj)
{
var mainContainer = $(obj).parents("div #contControls");
var mySelf = obj.parentNode.parentNode.parentNode.parentNode.parentNode;
mainContainer.removeChild(mySelf);
}
문제는 작동하지 않습니다 때문에 그 삭제 동작으로, 테이블이 포함 된 DIV 컨트롤에 접근하지 않는 mySelf
제어 발생합니다.
html로 코드
<div id="contControls">
<div class="optionPane">
<table rules="none" width="100%">
<tr>
<td class="optHdBg">
<a>
<img src="themes/theme_blog/images/icons/delete.png" name="delete" önclick="javascript:remove_block(this);"/>
</a>
</td>
</tr>
</table>
</div>
</div>
나는 클래스 optionPane
을 갖는 <div>
요소를 얻을 수 아니에요; <table>
의 부모를 타겟팅하려고 시도 할 때마다 ID가 contControls
인 <div>
이 표시됩니다.
후 추가 1 개 이상의 부모 노드가있는 경우 – elclanrs
먼저 'mySelf'를 비우려고 했습니까? 엘리먼트를 삭제하기 전에 엘리먼트를 비우는 것으로 수정 한 엘리먼트를 삭제하는 것이 문제가되던 것 같습니다. – Gareth
@ Gareth 예 mySelf 개체는 정의되지 않았습니다. 사실 나는 부모 컨트롤, 즉 테이블 컨트롤의 클래스 이름 "optionPane"을 가진 div를 얻지 못하고 있습니다. ** table ** 컨트롤의 부모를 얻으려고하면이 새 요소를 가지고있는 주 컨테이너를 제공합니다 –