2012-09-21 3 views
2

저는 jquery 초보자이고 jquery로 상자를 만든 다음 "삭제"합니다. 그러나 동일한 코드를 사용하여 생성 된 요소 범위와 이미 생성 된 요소의 범위를 삭제하려고합니다.jquery로 동적으로 생성 된 요소를 어떻게 조작 할 수 있습니까?

HTML :

<button id="create">Cria</button> 
    <div id="main"> 
     <div class="box"> 
      <a class="del-btn" href="#">Delete</a> 
     </div> 
</div> 

JS :

var box = { 

    create: function() { 
     var box = $('<div class="box">'); 
     var delBtn = $('<a class="del-btn" href="#">Delete</a>'); 
     box.appendTo('#main'); 
     delBtn.appendTo(box); 
    }, 

    destroy: function(elem) { 
    elem.fadeOut(); 
    } 

} 

function deleteBox() { 

} 

$(function() { 

    $('#create').click(function() { 
    box.create(); 
    }); 

    $('.del-btn').click(function() { 
    var elem = $(this).parent(); 
    box.destroy(elem); 
    return false; 
    }); 

}); 

내가 만들 클릭 이벤트 내부의 삭제 이벤트를 넣으면, 난 그냥 동적으로 생성 된 요소를 삭제할 수 있습니다. 바깥에 놓으면 HTML의 요소를 삭제할 수 있습니다. 나는 이것이 간단한 질문이라는 것을 알고 있지만 그것을 해결하는 방법을 알 수는 없다. 감사합니다

답변

6

당신은 delegated-events approach를 사용할 수 있습니다

$("#main").on("click", ".del-btn", function() { 
    var elem = $(this).parent(); 
    box.destroy(elem); 
    return false; 
}); 
+1

http://jsfiddle.net/BwTNR/ – undefined

+0

당신에게 아주 모자의 일종 감사드립니다. 완벽하게 해결했습니다 –

+0

@ and-k 오신 것을 환영합니다! – VisioN

관련 문제