我剛剛在我的MVC 4應用程序中使用PagedList實現了分頁。我的應用程序的主頁包含一個局部視圖,顯示有關某些對象的彙總數據列表。在每個列表項旁邊都有一個按鈕,點擊後會啓動一個模式窗口,顯示有關該特定列表項的更多信息。在MVC 4的部分視圖中使用PagedList在瀏覽'分頁'頁面時拋出jQuery/JS
在列表項目的第一個「分頁」頁面上,所有工作都很好,但是如果我導航到第二個「分頁」頁面並單擊按鈕啓動模式,則不會發生任何事情。從Chrome的開發者工具中,我獲得Uncaught TypeError: Object [object Object] has no method 'modal'
。
部分問題輸出列表,包含模態的DIV和JS函數來處理啓動模式窗口的按鈕單擊事件。這裏是JS從局部視圖:
<script type="text/javascript">
$(document).ready(function() {
$('.show-modal').click(function() {
var url = $('#modal-view-property-from-get-all').attr('data-url');
var id = $(this).attr('data-id');
$.get(url + '/' + id, function (data) {
$('#view-property-from-get-all-container').html(data);
$('#modal-view-property-from-get-all').modal('show');
});
});
});
</script>
,當我瀏覽回第一個「分頁頁面,按鈕不火或者和同一遺漏的類型錯誤被拋出。另一個我使用截斷多行文本的jQuery插件也停止工作,文本溢出其包含的DIV。
- 這裏實際發生了什麼 - 爲什麼使用分頁會干擾JS?
- 我該如何解決這個問題?
編輯:
特定類型的所有記錄從控制器動作返回:由Ajax.ActionLinks()
return PartialView("_GetAllPropertiesPartial", model.ToPagedList(pageNumber, pageSize));
因爲它是一個局部的,尋呼導航的處理:
@Ajax.ActionLink("<<", "GetAllProperties", new { page = 1 }, new AjaxOptions { UpdateTargetId = "quick-property-search-results" })
當您導航到第二頁,有沒有加載這個頁面的Ajax請求?還是一切都加載到第一頁呈現,然後在客戶端分頁? – amhed
是的,Ajax.ActionLink處理導航,因爲我使用的是部分視圖。請參閱編輯。 – MattSull
$('。show-modal')事件處理程序僅綁定在document.ready上,這意味着之後創建的任何dom元素(例如在第二頁加載時創建的元素)都不會有捆綁。嘗試使用.live('click',函數)而不是.click(函數) – amhed