JQuery $ (document) .ready ajax load - PullRequest
       11

JQuery $ (document) .ready ajax load

7 голосов
/ 28 июля 2010

Я рассмотрел довольно много связанных вопросов, и, должно быть, задаю этот вопрос совершенно по-другому, так как видел только некоторые из них, которые, казалось, имели отношение.Я загружаю весь средний div с помощью вызова JQuery Ajax, и я просто хочу иметь возможность автоматически выполнять JQuery для этой новой области, например $ (document) .ready разрешает, когда загружается DOM.Я читал, что livequery сделает это, но я подумал, что в этом есть способ.Я пытаюсь добавить указатель даты в поле ввода справа от начала.

Это содержимое, которое будет запрашивать содержимое в бэкэнде, которое затем вытянет какой-то определенный раздел.

Внутри файла, который помещается в этот divElement, будет метод JQuery, который необходимо запустить, чтобы изменить html внутри него.

Ответы [ 2 ]

8 голосов
/ 28 июля 2010

Зарегистрируйте события в обратном вызове функции AJAX.

Если вы используете .load() для загрузки среднего div , поместите код jQuery прямо в обратный вызов:

$('#middleDiv').load('/fish.php', function () {
    $('#someDiv').fadeIn(300); // ? whatever
});

Если вы используете некоторые другие функции AJAX, поместите код jQuery после строки, в которой вы добавляете элементы в DOM в обратном вызове:

jQuery.get('/fish.php', function (response) {
    $('#middleDiv').html(response);

    $('#someDiv').fadeIn(300); // ? whatever
});

Если это события, которые вы хотите связать, вы можете использовать. on() (или. delegate() или .live(), если вы Вы используете более старые версии jQuery, которые были примерно тогда, когда этот вопрос был изначально написан). Вы можете увидеть сравнение этих различных методов здесь .

Эти методы позволяют привязывать события к элементам, даже если они еще не представлены в DOM; это означает, что вы можете связать события в вашем блоке $(document).ready(), даже если элементы еще не зарегистрированы в DOM.

4 голосов
/ 28 июля 2010

Craig,

Я думаю, что вы пытаетесь пройти этот трудный путь.

Во-первых: хотя технически вы можете манипулировать ответом с помощью javascript / jquery, прежде чем вводить их на страницу, будет намного проще сделать это сразу после того, как они будут добавлены (согласно готовому документу) .

Во-вторых: я не уверен, насколько эффективным был бы этот метод, если бы вы добавляли что-то вроде указателя даты. Я предполагаю, что вы не можете добавить средство выбора даты к элементу, пока все это не появилось на странице (только предположение). Эти виджеты jQuery UI часто работают в фоновом режиме.

Я предлагаю вам последовать совету Мэтта.

Если вы вызываете $ .post, функция обратного вызова совпадает с вашей функцией $ (document) .ready, она будет вызываться, как только ответ станет доступен, чтобы вы могли сделать что-то вроде этого:

$.post(url, data, function(response) {
    $("#some_element").append(response);
    // Now your element has been injected you can do whatever u like here
    // call some function etc.
});

Это лучший способ сделать это. Манипуляция будет выполнена, как только данные будут введены на вашу страницу так же, как $ (document) .ready.

Если вы считаете, что с тем, что вы делаете, есть некоторая задержка, и вы не хотите, чтобы ваши пользователи видели, тогда настройте отображение, чтобы скрыть, а затем исчезнуть или показать, как только манипуляция будет выполнена.

...