Как запустить готовые функции DOM в jQuery, когда они были загружены через AJAX? - PullRequest
1 голос
/ 19 августа 2011

В моей компании есть веб-приложение, встроенное в ASP.NET, и они попросили меня написать виджет для страницы панели инструментов, которая у них уже есть. Эти виджеты являются пользовательскими элементами управления, которые загружаются динамически во время выполнения. Моя проблема в том, что у меня есть некоторый пользовательский JavaScript, который должен запускаться каждый раз, когда загружается виджет.

$(function ()
{
    // Setup widget.
});

Это прекрасно работает при первой загрузке страницы панели инструментов. Моя DOM ready функция запускается и все хорошо. Однако всякий раз, когда пользователь перемещает виджеты на своей панели инструментов, все виджеты находятся на панели обновлений, и все они перезагружаются с использованием AJAX. Функции готовности DOM не запускаются, когда они вставляются на страницу через AJAX.

Какие-либо предложения о том, как этот код выполняется каждый раз при загрузке виджета?

Ответы [ 4 ]

1 голос
/ 19 августа 2011

Не можете ли вы использовать функцию ASP.Net AJax pageLoad ()?

Объяснение того, как она отличается от $ (document) .Ready () здесь -> http://encosia.com/document-ready-and-pageload-are-not-the-same/

1 голос
/ 19 августа 2011

Способ, которым я обхожу это, состоит в том, чтобы назвать заданные ставки событий, когда вы определяете их изначально под нагрузкой. Затем в функции обратного вызова для ajax сбросьте эти события и снова установите их для вновь созданных элементов dom.

0 голосов
/ 19 августа 2011

Когда вы выполняете ajax-вызов, у вас есть функция возврата, выполняйте ваш установочный код

$.post(url, {/*data*/}, function() {
    // return function call
    // do setup code
});

EDIT:

Поскольку у вас нет контроля, у вас может быть обработчик для перехвата вызовов ajax:

$(#your-widget-area).ajaxComplete(function(e, xhr, settings) {

});

документацию можно найти здесь: http://api.jquery.com/ajaxComplete/

0 голосов
/ 19 августа 2011

Вы можете заставить каждый виджет вызывать функцию настройки после записи его HTML в DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...