Предотвратить расширение элемента в заголовке - PullRequest
3 голосов
/ 23 августа 2011

Я использую jQueryUI Accordion и генерирую элементы на лету. Мне нужно предотвратить расширение аккордеона, если мы нажмем ссылку Удалить действие внутри заголовка.

Чтобы остановить выполнение дополнительных обработчиков после одного связывания с использованием .live (), обработчик должен вернуть false. Вызов .stopPropagation () этого не сделает.

Не повезло с return false. Пожалуйста, смотрите демо .

Ответы [ 2 ]

1 голос
/ 29 августа 2011

Я не думаю, что вам будет слишком много удачи в достижении того, что вы хотите с live(), поскольку jQuery поддерживает только всплывающее окно событий, а не захват событий . Решение о проекте было, вероятно, связано с тем, что IE не поддерживает захват событий, хотя спецификация W3C обладает гибкостью для обоих.

Лучше всего прикрепить событие click к кнопке удаления сразу после того, как она вставлена ​​в DOM (чтобы остановить распространение события), прежде чем вы снова включите аккордеон. Возможно, вам придется позаботиться о том, чтобы не связывать событие нажатия с существующими кнопками удаления несколько раз.

Псевдокод будет выглядеть примерно так:

  1. вызов .accordion('destory') на текущем аккордеоне
  2. создать новый элемент, т.е. <h2>...<a class="revmoe">...</a></h2><div>...</div>
  3. вставить новый элемент в существующую гармошку
  4. привязать событие click к кнопке удаления в новом элементе, чтобы остановить распространение события
  5. начать аккордеон, то есть .accordion({..})

ТАК сообщения о захвате событий в jQuery:

0 голосов
/ 23 августа 2011

Просто используйте данные функции плагина:

$('#accordion').accordion({active:8, disabled:true});

jQuery('.remove').click(function(){
$('#accordion').accordion('disable');

})

Я выбрал опцию «active: 8», потому что таким образом заголовок с самого начала не открывается (индекс -1 не работает для IE). Проверьте функцию и опции на: http://docs.jquery.com/UI/Accordion

Надеюсь, это то, что вы искали: -)

...