2009-10-10 6 views
1

Я уверен, что это просто, но я ударяю головой!Unbind jquery plugins

Я использую отличный плагин jQuery для редактирования (http://www.appelsiini.net/projects/jeditable). Пользователи могут создать форму «на лету», а затем щелкнуть, чтобы отредактировать заголовок, текст текста и многое другое.

Каждый раз, когда пользователь создает новый вопрос, я перепривязываю плагин так:

$('.edit').editable() 

Где каждый элемент с классом «редактировать», должен быть доступен для редактирования.

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

<input class=""> 

Что делает потому что он получает связь дважды (или больше). Как лучше подойти к этой проблеме? Мой инстинкт заключается в том, чтобы развязать плагин на всех элементах «редактирования», а затем повторить его, но я не знаю, как это сделать.

Спасибо за вашу помощь

ответ

5

«Плагин» - это просто функция, добавленная к jQuery.fn. Если создатель не определяет метод удаления или уничтожения, функция не может быть отменена.

Редактировать: редактируемая функция, если задан параметр 'destroy', отсоединяет плагин.

1

Scope ваш селектор только вновь созданный вид.

$('<form>...</form>').appendTo('someDiv') 
        .find('.edit') 
        .editable(); 

или

$('form:last').find('.edit') 
       .editable(); 

Обратите внимание, что селекторы для формы являются лишь примерами. Вам просто нужно найти нужную форму и применить только редактируемый плагин к элементам, украшенным классом edit.

+0

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

+0

Вам нужно было знать, какие события были добавлены а также удалить эти пары событий/функций с помощью метода unbind(). Это, вероятно, лучше всего обеспечивается каждым плагином, например, плагин диалога JQuery UI делает это с помощью метода destroy: http://docs.jquery.com/UI/Dialog#method-destroy – tvanfosson