2011-02-10 2 views
0

У меня есть страница, на которой пользователь добавляет и редактирует список книг. Вы можете перемещать их, добавлять новые книги, редактировать книги уже там ...Невозможно клонировать диалоги jQueryUI

Чтобы добавить или отредактировать каждую отдельную книгу, появится диалоговое окно с формой с несколькими полями ввода: название, автор, жанр и т. Д. I также есть плагин Watermark, поместивший текст по умолчанию в каждое из этих полей.

Вместо того, чтобы повторять и перезапускать каждое из этих полей ПОСЛЕ каждой книги, сохраненной в главном списке, и диалог закрыт, чтобы получить форму для следующей книги, я думаю, что это будет проще просто использовать клон формы каждый раз, а затем просто выбросить клона после каждого сохранения:

$("#addEditBook").click(function() { 
$("#bookForm").clone().removeAttr("id").attr("id", "clonedBookForm").insertAfter("#bookForm"); 
$("#clonedBookForm").dialog("open"); 
return false; 
}); 

в FireBug, я вижу #clonedBookForm создается. И он идентичен #bookForm ниже.

Но следующая строка, .dialog("open"); выдает эту ошибку:

uncaught exception: cannot call methods on dialog prior to initialization; attempted to call method 'open' 

Примечание: Я знаю

$("#clonedBookForm").dialog({ 
autoOpen: false, 
modal: true, 
resizable: false, 
draggable: false, 
etc., etc. 

... работает, потому что он отлично работает с оригинальным #bookForm. Что-то о событиях, которые не клонируются?

Я хотел бы получить эту разобраться, потому что я бы себе одноразовая клоны вещей была бы реальная экономия времени ...

Спасибо заранее!

ответ

0

Ваш bookForm диалог, который вы клоны, wraped в другом контейнере при его инициализации с

$("#bookForm").dialog({ 
autoOpen: false, 
modal: true, 
resizable: false, 
draggable: false, 
etc., etc. 

строительства. И затем вы позже клонируете bookForm, вы клонируете только завернутый контент, без основной обертки. Вот почему у вас нет успеха. Попробуйте использовать шаблоны jQuery и создать новое диалоговое окно из шаблона.

+0

CoolEsh, большое спасибо за то, что нашли время, чтобы помочь. Интересно, могу ли я вас беспокоить: а) изложите свою точку зрения на обернутый контент по сравнению с основной оболочкой. В Firebug я вижу, что #clonedBookForm и #bookForm идентичны - дочерние элементы, данные и все. И б) можете ли вы поделиться ссылкой на шаблоны jQuery? Я googling вокруг но продолжаю находить вещи на JTML, который не звучит как то же самое ... –

+0

a) Давайте посмотрим на мой простой пример здесь: http://jsfiddle.net/SX5b6/1/. Как вы видите, я добавил очень простой диалог. Но если вы посмотрите на него с помощью firebug, мой div с id будет вложен в другой div без id и вы не сможете обрабатывать его параметры; – CoolEsh

+0

b) о шаблонах: я использую их для заполнения системных диалогов, которые позволяют мне не копировать-вставлять html-код каждый раз, когда мне нужен диалог на странице. 'jQuery.template ('templateName', '');' позволяет сохранять шаблон и 'jQuery.tmpl ('templateName', params) .appendTo (someDropdownElement); 'позволяет передавать параметры в шаблон и добавлять html к некоторому элементу. Пожалуйста, прочитайте API jQuery для получения более подробной информации: http://api.jquery.com/?ns0=1&s=tmpl – CoolEsh

Смежные вопросы