2013-12-16 2 views
0

테이블 (django-tables2 작성)에서 레코드를 삭제하도록 설정된 ajax 호출이 있습니다. 모든 행에는 클래스가 delete_relationship_button 인 h 제 단추와 관계 레코드의 pk ID가 있습니다. 아약스 호출은 한 번 완벽하게 작동합니다. 후속 호출은 아무 것도하지 않습니다. 네트워크 탭과 콘솔 모두 결과를 표시하지 않습니다. 다른 사람들도이 문제를 겪고있는 것을 보았습니다. 그러나 해결책은 모두 추천되지 않는 .live을 사용합니다.Ajax 호출은 처음으로 만 호출됩니다.

아이디어가 있으십니까? 또한 왜 이런 일이 발생하는지에 대한 설명이나 요령을 좋아할 것입니다.

$('.delete_relationship_button').on('click', function(){ 
    relationship_pk = this.id; 
    console.log(relationship_pk); 
    $.ajax({ 
     type: 'POST', 
     url: '/app/relate/delete/', 
     data: {'relationship_pk':relationship_pk}, 
     success: function(data){ 
      $('#relationship_tables').html(data); 
     } 
    }) 
}) 


def delete_relationship(request): 
    # import pdb; pdb.set_trace() 
    try: 
     relationship_pk = request.POST.get('relationship_pk') 
     relationship = ItemRelationship.objects.get(pk=relationship_pk) 
     source = relationship.source 
     relationship.delete() 
    except: 
     pass 
    db_table, component_table = get_relationships(source) 
    return render(request, 'who/subtemplates/relationships.html', 
     {'db_table': db_table, 'component_table': component_table,}) 
+1

$('.delete_relationship_button').on('click', function(){ 

을 변경 {' – karthikr

+0

브릴리언트! 원하십니까 – thumbtackthief

+1

더 나은 성능을 위해'document' 대신에'.delete_relationship_button'의 static 부모에게 이벤트를 위임하는 것이 가장 좋습니다. 'document'에 click 이벤트를 첨부하면 모든 이벤트가 처리 될 것입니다 페이지가 클릭 된 모든 시간. 처리 됨은 의미합니다. 콜백을 실행하기 전에'.delete_relationship_button'이 클릭 된 실제 요소인지 확인합니다. – user193130

답변

0

동적으로로드 된 콘텐츠에는 delegation using on을 사용해야합니다.

그래서, 그냥 (,, 기능을 '.delete_relationship_button'을 '클릭'()`$ (문서) CSTE 연구진을 시도

$(document).on('click', '.delete_relationship_button', function(){ 
관련 문제