2013-12-16 132 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(){