2013-06-13 6 views
0

Я использую список JQuery Mobile аккордеонаUnbind расширить JQuery Mobile Collapse

Я слушаю для расширения одного из элементов, используя (в моем pageshow слушателя)

$("#myListSection").bind("expand",function(){}) 

В моем приложении, страницы переключаются взад и вперед. У меня возникла проблема, когда было создано несколько расширений подписки, поэтому, когда я снова переключился на список, у меня было бы несколько функций, вызываемых при расширении раздела. Поэтому я хочу использовать метод unbind, когда вы покидаете страницу, чтобы уничтожить слушателя.

Проблема, с которой я столкнулась, - это когда я отвязываю событие, а затем пытаюсь восстановить его.

$("#myListSection").unbind("expand") 
$("#myListSection").bind("expand") 

В принципе есть теперь только один расширить событие увольнения (что хорошо), но раздел списка не расширяется ... Я домысливать отвязать уничтожили больше, чем просто мой слушатель.

JS Fiddle пример: http://jsfiddle.net/6txWy/1658/

+0

Жаль этого http://jsfiddle.net/Palestinian/6txWy/1660/ – Omar

+0

Нет. Я хочу, чтобы добавить слушателя разнесения, удалить слушателя, а затем снова прикрепить его к тому же div. – K2xL

ответ

1

Simple. Установите функции вы хотели бы выполнить как отдельные функции, как это:

function expand() {..} 
function collapse() {..} 

Тогда ваши обработчики событий должны быть так:

$('#my-collaspible').bind({ 
    'expand': expand, 
    'collapse': collapse 
}); 

Я предпочитаю прохождение таких функций, как это, потому что это делает мой код чистой и понятно. THEN, давайте приступим к основной части. Вместо того, чтобы просто использовать unbind и удаляя все функциональные возможности, связанные с складной, используйте unbind с функцией ранее связанной его как это:

$(this).unbind('expand', expand); 

где второй expand является функцией Анон вы прошли. Позже, когда это необходимо, collapsible может быть привязан к expand() следующим образом. (Опять же)

$(this).bind('expand', expand); 

(Предполагая, что this является складная здесь)

Демо: http://jsfiddle.net/hungerpain/6txWy/1661/

Extras - почему JQuery удаляет все данные о событиях, связанных с сборно-разборные, когда unbind используется: Collapsibles не являются ли они родными? Они сфабрикованы jQM с помощью toggleClass, который сам по себе является функцией и прикреплен как обработчик события click. (Не совсем, как это работает, но вы получаете суть) Итак, просто позвонив unbind, вы уничтожаете все.

Надеется, что это помогает :)

PS Пожалуйста, обратите внимание, используя последнюю версию JQuery & JQuery мобильного телефона. В блоке появился новый ребенок по имени on, который намного лучше, чем bind во многих отношениях.

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

  • Нет связанных вопросов^_^