2012-08-22 10 views
0

다음 코드는 항목을 삭제해야하는지 확인하는 대화 상자를 보여줍니다. 문제는 삭제 버튼을 누를 때마다 항목의 ID가 매번 #dialog 데이터에 추가된다는 것입니다..removeData 데이터 ID를 제거하지 않음

내가 처음 삭제할 때 예상했던대로 이드에게 경고합니다. 삭제할 다른 항목을 클릭하면 이전 ID도 표시됩니다. 대화 상자에 첨부 된 데이터를 올바르게 지우려면 어떻게해야합니까?

// Delete confirmation modals 
$('#dialog').on('show', function() { 

    var $this = $(this); 
    var id = $this.data('id'); 

    $('#delete-confirm').click(function(e) { 
     e.preventDefault(); 

     $this.removeData('id', id); 

     alert(id); 

    }); 
}); 

$('.delete').click(function(e) { 
    e.preventDefault(); 
    $('#dialog').data('id', $(this).data('id')); 
}); 
+0

무엇이 오류입니까? –

+0

'$ this.removeData ('id', id)'대신'$ this.removeData ('id')'를 시도 했습니까? 'removeData()'는 하나의 인자만을 취합니다. –

+0

오류가 없습니다. 문제는 질문에서 설명한 것입니다. 한 번만 필요하면 ID를 데이터에 계속 추가합니다. – Motive

답변

3

당신은 결코 .data('id')

// Delete confirmation modals 
$('#delete-confirm').click(function(e) { 
    e.preventDefault();  
    $("#dialog").removeData('id');  
    alert($("#dialog").data('id'));  
}); 

$('.delete').click(function(e) { 
    e.preventDefault(); 
    $('#dialog').data('id', $(this).data('id')); 
}); 
또한

의 새로운 값으로 id 변수를 업데이트하지 않습니다 만들 당신이 delete-confirm 요소 일어날 수 같은 요소에 여러 이벤트를 바인딩되지 않았는지 . 대화 상자를 여러 번 표시하고 삭제를 여러 번 확인하여 확인하십시오. 경고가 계속해서 더 많이 발생하면 이벤트를 다시 바인딩합니다.

+0

예, 대화 상자가 여러 번 나타납니다. 그것을 방지하는 방법에 대한 아이디어가 있습니까? – Motive

+0

클릭 이벤트 바인딩을 show 이벤트 외부로 이동하십시오. –

관련 문제