2013-12-16 95 views
0

我有一个ajax调用集来从表中删除记录(由django-tables2制作)。每行都有一个删除按钮,其类别为delete_relationship_button,关系记录的pk为id。 ajax调用完美...一次。后续呼叫什么都不做 - 网络选项卡和控制台都不显示任何结果。我看到其他人有这个问题,但解决方案都涉及使用.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',函数(){' – karthikr

+0

辉煌!想让它成为答案,所以我可以接受它? – thumbtackthief

+1

为了获得更好的性能,最好将事件委托给'.delete_relationship_button'的静态父项而不是'document'。将click事件附加到'document'会导致它被处理点击页面的任何时间,处理意味着它在执行回调之前检查'.delete_relationship_button'是否是点击的实际元素。 – user193130

回答

0

对于动态加载的内容,您必须使用delegation using on

所以,改变

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

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