Стоп Click, Enter и Arrow Binding для дочернего элемента заголовка

0

Поэтому я хотел бы поместить контентное поле в заголовок Аккордеона из JQueryUI, однако, когда я пытаюсь связать событие с этим субобъектом, привязки аккордеона имеют приоритет, даже когда я пытаюсь развязать или заблокировать наследование.

<div class="accord">
    <div>
        <div class="theHead" >
            <span class="ignoreAccordBinds" contenteditable="true">Edit Me</span>
        </div>
        <div class="theBody">
        SomeBody
        </div>
    </div>
            ...

Я бы хотел, чтобы приведенный выше код игнорировал все действия аккордеона при выполнении каких-либо действий в пределах диапазона.

я пробовал

     $(".ignoreAccordBinds").keypress(function(e){
          e.stopPropagation();
      });
   $(".accord").find(".ignoreAccordBinds").unbind();

Ничего не помогает.

Я создал JSFiddle моей проблемы. Если вы попытаетесь использовать клавишу со стрелкой вправо для перемещения курсора (каретки) на одном из заголовков, аккордеон вместо этого выбирает другой div. Если вы попытаетесь нажать клавишу ввода, она откроет/закрывает их вместо того, чтобы вставлять разрыв строки.

У кого-нибудь есть идеи?

2 ответа

1
Лучший ответ

Удалите unbind() и зарегистрируйте обработчик keydown

$(".ignoreAccordBinds").keydown(function (e) {
    e.stopPropagation();
});

Демо: скрипка

Событие нажатия клавиши запускается, когда клавиша нажата, и эта клавиша обычно генерирует значение символа - поэтому клавиши, подобные стрелке, не срабатывают

  • 0
    Ах, да, это было сделано! должен был подумать о нажатии клавиши вместо нажатия клавиши. Спасибо!
2

использование

$(".ignoreAccordBinds").keypress(function (e) {
    e.stopPropagation();
    return false;
});

Ваш синтаксис неверен.

  $(".ignoreAccordBinds").keypress()(function(e)
                                  ^

Здесь вам не нужны скобки.

DEMO

  • 0
    Да, мой был опечатан, но это не работает в любом случае. Я, однако, исправлю это в моей скрипке и примере. Спасибо
  • 0
    @Jeff, используй return false;
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню