Как добавить содержимое к элементам, созданным после загрузки страницы

#javascript-events #jquery

#jquery #jquery-события

Вопрос:

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

 $('div#mydiv').load(function(){
   $(this).html('loaded!');
});
  

Комментарии:

1. где создается div? Разве вы не можете добавить .html() туда?

2. Я справляюсь с этим. Спасибо, Мануэль. Я пошел слишком сложным путем.

Ответ №1:

Вы должны создать событие для щелчка в разделе ready:

 $('input').live( 'click', function(){
        alert("!");
   });
  

Ответ №2:

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

Из того, что вы опубликовали до сих пор, я полагаю, что #myDiv div отсутствует в исходном HTML страницы. Итак, я вижу две возможности:

  • У вас есть какой-то другой JS, который создает элемент (например. $('#foo').append('<div id="myDiv"></div>') . Тогда элемент будет доступен и «там», как только ваш код добавит его к какому-либо элементу на странице. Итак, в этом случае, предполагая, что элемент #foo уже находится в DOM, вы можете сделать что-то вроде $('#myDiv').text('Loaded!') в следующей строке.
  • Вы загружаете элемент как часть вызова AJAX (т.Е. По сети). Если вы используете .load with element ( $('#foo').load('/someurl') ), вы можете добавить другой параметр с функцией обратного вызова, которая будет вызвана после загрузки содержимого. Если вы используете $.ajax or его сокращенных друзей ( $.get , $.post , и т.д.) и динамически добавляете / создаете контент из его success complete обратных вызовов or, см. Предыдущий пункт.

Надеюсь, это поможет. Без дополнительного контекста трудно дать более конкретный ответ на ваш вопрос, извините!

Ответ №3:

Попробуйте загрузить внешний файл, а затем вставить свой код в обратный вызов:

 $('#mydiv').load('myfolder/myfile.html', function() {
    $('#mynewdiv').html('loaded');
});
  

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