2013-01-21 77 views
0

我有以下的CoffeeScript jQuery代碼做一些Ajax調用的應用程序:阿賈克斯不用彷徨之後。員額不工作()

$('#records-filter-date').submit -> 
$.get(@.action, $(@).serialize(), null,'script') 
return false 

$('#records-delete').submit -> 
$.post(@.action, $(@).serialize(), (data)-> 
    $('.check-for-delete:checked').parent().parent().hide(600,'swing') 
    $('#alert-div').html("<div class='alert alert-success '><button class='close' data-dismiss='alert' type='button'>x</button><div id='flash_notice'>"+data+ " record(s) successfully deleted!</div></div>") 
    $.get('#records-filter-date'.action, $('#records-filter-date').serialize(), null,'script') 
,'text') 
return false 

現在這一頁列出的某些記錄。第一個電話是通過ajax提交搜索字段。第二個是刪除選定的記錄(使用複選框)。現在我只需刪除記錄並重定向到列出記錄的操作,但搜索參數將會丟失(如果用戶在刪除記錄之前過濾了記錄),並且他們將不得不再次過濾記錄。

所以我所做的是在刪除被稱爲成功後,我打電話在搜索字段中提交了日期,並想到更新記錄。

但是...當沒有搜索參數(當沒有搜索完成時)刪除工作良好。但是當我做一個搜索,然後我做一個刪除...該請求被處理爲一個正常的http請求..

有無論如何維護搜索參數?還是我需要做任何事情來解決這個問題?

編輯:提交要刪除的記錄的表單是在由搜索調用更新的div內。當div更新時,是否可以斷開與ajax通話的綁定?

回答

1

提交要刪除記錄的表單位於通過搜索調用更新的div內。當div更新時,是否可以斷開與ajax通話的綁定?

是的,這是問題所在。當您替換元素的HTML內容時,其中的所有現有元素都將從DOM中刪除,並且它們的關聯數據和事件處理程序將與它們一起移除。即使你用相同的內容替換它,結果元素也是新的。您需要使用event delegation。下面的代碼的正常jQuery的版本:

$(document).on('submit', '#records-delete', function(e) { 
    // your $.post() code here 
}); 

理想的情況下,而不是document,你會使用這是在層次結構更接近於動態元素的靜態元素(你#records-delete形式是這裏的動態元素)。在你的情況下,這將是包含該表單的<div>的選擇器。