У меня есть веб-проект MVC3, который включает в себя очень простую форму поиска.Он использует ненавязчивый AJAX для возврата фрагмента HTML, содержащего результаты в виде таблицы, и заменяет существующую таблицу.Моя проблема в том, что я хочу использовать плагин DataTables jQuery для таблицы, чтобы получить сортировку, разбиение на страницы и т. Д. Но я не могу найти правильный способ вызова кода инициализации плагина в таблице.
Что у меня есть, так это (this.Html.Script - просто метод расширения, который я написал для автоматического создания тегов скрипта):
Search.cshtml:
@section ScriptSection
{
@this.Html.Script("libs/jquery.unobtrusive-ajax.min.js")
@this.Html.Script("libs/jquery.validate.js")
@this.Html.Script("libs/jquery.validate.unobtrusive.js")
@this.Html.Script("libs/jquery.dataTables.js")
<script type="text/javascript">
function initTable() {
$("table.datatable").dataTable();
}
</script>
}
@using ( this.Ajax.BeginForm("DoSearch", "Case", new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "results",
OnSuccess = "initTable"
}) )
{
<button type="submit" name="SearchType" value="date">Search</button>
}
<table id="results" class="datatable">
</table>
Проблема в том, что initTable (), кажется, вызывается до того, как таблица, которую я хочу, фактически находится в DOM.В результате таблица результатов вставляется на страницу полностью без стилей, и ни одна из функций dataTable не включена.
Правильно ли я это делаю, или есть другой способ запустить jQuery после запуска DOM?был обновлен?