У меня есть диалоговое окно jQuery, в котором отображается форма. У формы есть div "picture_fields", в которые я добавляю новые поля, если пользователь нажимает кнопку «Добавить больше изображений», т.е. форма отображается с одним файловым полем «Изображение», но пользователи могут добавить больше, Добавить больше фотографий ".jQuery append странно ведет себя в диалоговом окне jQuery
Все это отлично работает при первом отображении диалога с формой в нем, но если вы закроете диалоговое окно, а затем снова откроете его, приложение не будет работать больше. Вы можете нажать на ссылку, но никакое поле файла не добавляется. Я отлаживал его, и он вызывает правильную функцию, включая append, но она просто не добавляет ее, как я ожидал.
Это моя функция (упрощенных вниз), которая обрабатывает «Добавить еще картинки» нажмите:
/**
* Add Picture Field Functionality
*/
$('form a.add_child').live('click', function() {
$("#picture_fields").append('<p> File Field Here </p>');
return false;
});
Это мой диалог обработчик:
/**
* New Object Button opening modal Dialog
*/
$('.dialog_form_link').live('click', function() {
var $dialog = $('<div></div>')
.appendTo('body')
.load($(this).attr('href') + ' .entry_form')
.dialog({
title: $(this).text(),
modal: true,
autoOpen: false,
show: {effect: 'blind'},
hide: {effect: 'blind'},
});
$dialog.dialog('open');
// prevent the default action, e.g., following a link
return false;
});
});
В пользователь нажимает на «Новый объект "(с классом" dialog_form_link "), который открывает форму нового объекта в диалоговом окне jquery. В этом диалоговом окне он затем нажимает ссылку «Добавить фотографии» (с классом «add_child»). Отлично работает при первом открытии диалога, после чего он никогда не работает. Он только начинает работать снова ПОСЛЕ того, как я перезагружаю всю веб-страницу, но снова только один раз.
== UPDATE == Я пытался добавить близкий вариант, как предложил:
$('.dialog_form_link').live('click', function() {
var $dialog = $('<div></div>')
.appendTo('body')
.load($(this).attr('href') + ' .entry_form')
.dialog({
title: $(this).text(),
modal: true,
autoOpen: false,
width: 900,
height: '900',
position: 'center',
show: {effect: 'fade', duration: 300},
hide: {effect: 'blind', duration: 500},
close: function(ev, ui) { $(this).destroy(); alert("Closed"); }
});
Я также попытался с close: function(ev, ui) { $(this).close(); }
. Оба из них вызываются при закрытии диалога (я нажимаю на X и вижу предупреждение), но после этого я больше не могу открыть диалог. Я получаю серое наложение, но не диалог. Я считаю, что это обычная ошибка начинающих (и мальчик я!), Когда диалоги jquery не инициализируются должным образом, поэтому, возможно, я делаю что-то совершенно неправильное здесь? Я считаю, что опция autoOpen тоже имеет к этому отношение, поэтому я включил и отключил это, с закрытием и уничтожением, но опять же, без кубиков. Я посмотрю this answer, но в то же время, если у кого-нибудь есть другие предложения, я буду очень благодарен.
Какой код вы используете для закрытия диалога? – codeulike