Невозможно клонировать диалоги jQueryUI - PullRequest
0 голосов
/ 10 февраля 2011

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

Чтобы добавить или отредактировать каждую отдельную книгу, появится диалоговое окно, содержащее форму с несколькими полями ввода: название, автор, жанр и т. Д. У меня также есть плагин 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. Что-то о событиях, которые не были клонированы?

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

Заранее спасибо!

1 Ответ

0 голосов
/ 10 февраля 2011

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

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

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

...