$ jQuery (документ) .ready ajax загрузка

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

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

$.post("ReportingWizard",$("#wizard_form").serialize(), function (data) { setData(data); });

function setData(data) {
divElement.innerHTML = data;
$(activeTab).fadeIn(); //Fade in the active content
$(".wizardBody").fadeIn();
}

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

7
задан Craig 27 July 2010 в 22:43
поделиться

2 ответа

Зарегистрируйте события в обратном вызове функции 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.

8
ответ дан 6 December 2019 в 21:08
поделиться

Крэйг,

Я думаю, вы пытаетесь решить это на собственном горьком опыте.

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

Во-вторых: я не уверен, насколько эффективным был бы этот метод, если бы вы добавляли что-то вроде датпикера. Я предполагаю, что вы не можете добавить datepicker к элементу, пока все это не будет на странице (просто предположение). В этих виджетах 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.

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

4
ответ дан 6 December 2019 в 21:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: