ASP.NET MVC 3 Ajax формы: запуск JavaScript после обновления DOM - PullRequest
0 голосов
/ 30 апреля 2011

У меня есть веб-проект 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?был обновлен?

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

Блеф, глупая ошибка. JQuery DataTables нужны теги, которые я не использовал. Извините за шум.

0 голосов
/ 30 апреля 2011

введите свой код:

$(document).ready(function() {
  // Handler for .ready() called.
});

и посмотрите, поможет ли это вам - DOM должен быть полностью загружен.

...