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

0
<div id="t1" contenteditable="true" style="width: 400px; height: 200px;">
    <ul>
        <li style="list-style-type: none;">Apple</li>
    </ul>
</div>    <span id="dd"></span>

<script>
$(function () {
    event.returnValue = false;
    $('#t1>ul').on("click", 'li', function () {
        utility.test(this);
    });
});

var utility = {
    test: function (elem) {
        var $this = $(elem);
        $('#dd').html($this.html());
        if (event.preventDefault) event.preventDefault();
    }
}

выше код работает нормально, но если я изменяю событие привязки от клика к keydown, как показано ниже

$('#t1>ul').on("keydown", 'li', function () {

то это не сработало. Я использую jQuery версии 1.9.1 и пытаюсь использовать.live для версии 1.8.3, но все равно не работает.

Большое спасибо.

Теги:
bind
live

2 ответа

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

Тег с контентом contenteditable будет захватывать и keydown событие keydown, а не контент внутри него. Проще говоря, ваш <li> не keydown событие keydown.

  • 0
    Мне нужен флаг для редактирования моего контента, есть ли решение для этого случая?
  • 0
    Что вы собираетесь делать после события? Судя по приведенному коду, кажется, вы пытаетесь проверить действительность изменений? Если это так, вы можете отслеживать $("#t1") для события keydown , а затем проверять его дочерние элементы, но все это в значительной степени зависит от того, что именно вы хотите выполнить после события keydown .
Показать ещё 2 комментария
0

Почему бы не просто изначально выбрать ли?

$('#t1 li').on("keydown", function () {
    alert('You are typing');
    utility.test(this);
});
  • 0
    Я пытался, но он не может связываться с новым элементом create. Спасибо за ответ.

Ещё вопросы

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