<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, но все равно не работает.
Большое спасибо.
Тег с контентом contenteditable
будет захватывать и keydown
событие keydown
, а не контент внутри него. Проще говоря, ваш <li>
не keydown
событие keydown
.
Почему бы не просто изначально выбрать ли?
$('#t1 li').on("keydown", function () {
alert('You are typing');
utility.test(this);
});
$("#t1")
для событияkeydown
, а затем проверять его дочерние элементы, но все это в значительной степени зависит от того, что именно вы хотите выполнить после событияkeydown
.