2014-02-27 41 views
0

我有一個jquery插件 - 快速搜索 - 我需要在ajax調用後才能工作,以便用戶在添加/刪除項目後仍然可以搜索表格。在每個ajax調用之後重新啓動相同的jquery插件?

下面是執行插件代碼:

$('.quicksearch').quicksearch('table.quicksearch>tbody>tr',{ 
    'delay':100, 
    'noResults': '.quicksearch tr.noresults', 
    'removeDiacritics':true, 
}); 

當我執行一個Ajax請求,我empty()表,detach(),然後append()它在最後。

在SO上讀了一下之後,看起來好像我必須在ajax調用完成時重新啓動插件 - 在表格被添加後。
就像我第一次加載頁面時那樣 - 就像上面的代碼一樣。

在我的情況下,我通過將上面的代碼放入jqXHR.done()中來解決問題。

但是因爲我有很多需要這個插件啓動的AJAX調用,所以我現在必須在它們每一個的末尾添加這個小代碼。

有沒有辦法讓這個更簡單?或者它是如何? 這是完全一樣的代碼..

回答

1

你將不得不在調用空的/ detach/append後調用該表.quicksearch函數。你可以把它放在一個像resetQuicksearchTable()這樣的函數中,以使它更方便。

你也可以看看quicksearch是否對事件委託有任何支持,而不是直接附加到tr,但我之前沒有用過這個插件,所以不能說。

+0

我不確定我是否理解「支持事件委派而不是直接附加到tr」的含義。你能否爲我詳細說明一下?感謝您的建議,順便說一句,.. – ThomasK

+0

事件代表意味着您的選擇器將附加到表本身,並處理表級別的點擊,只要點擊的目標匹配某個選擇器。這樣,當TR行從DOM中移除時,事件處理程序保持不變。 –

相關問題