Когда я загружаю страницу, у меня есть некоторые «статические» HTML-теги с определенным классом с именем .file_item
в контейнере с именем #files_container
. Позже на той же странице, без обновления, я добавляю (добавление) через Ajax new .file_item
. Простой $ .ajax - отлично работает.jQuery: Выполнение чего-то на статичных и динамически создаваемых элементах (делегированные события)
Моя проблема в том, что тогда я хочу выполнить событие on click по этим элементам.
Я знаю, что проблема - я знаю как решить эту проблему, но я считаю, мой подход крайне некрасиво. Я знаю о делегированных событий (http://api.jquery.com/on/#direct-and-delegated-events), и я знаю, что запуск:
$('.file_item').click(function() {
// will work on static elements but won't work on "dynamic" elements appended via Ajax.
});
против
$('#files_container').on('click', '.file_item', function() {
// won't work on static elements but will work on "dynamic" elements appended via Ajax.
});
Наконец мой вопрос: Как совместить эти два вместе так, то независимо от того, если .file_item
сделал существуют, когда я загрузил страницу или был добавлен через 15 минут через Ajax, мой код внутри скобок будет выполнен?
Edit:
Вот как HTML выглядит следующим образом:
<section id="files_container">
<section class="file_item">file 1</section>
<section class="file_item">file 2</section>
<section class="file_item">file 3</section>
<section class="file_item">file 4</section>
<section class="file_item">file 5</section>
</section>
Дополнительные файлы будут предваряться с помощью Ajax.
<section id="files_container">
<section class="file_item">new one injected via prepend by $.ajax</section>
<section class="file_item">file 1</section>
<section class="file_item">file 2</section>
<section class="file_item">file 3</section>
<section class="file_item">file 4</section>
<section class="file_item">file 5</section>
</section>
Привет, Арун, я обновил свой вопрос, чтобы показать вам разметку. Никакой ракетной науки. Всегда будет только один файл_контейнер, который будет иметь кучу file_items. Ваше решение с привязкой к документу не работает. – slick
@slick http://jsfiddle.net/arunpjohny/1remk8nh/2/ - в этом случае ваш код должен работать нормально –
@slick вы можете обновить скрипку, чтобы воссоздать случай –