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