jQuery - 使用退格键按压事件删除列表项?

时间:2012-12-09 07:14:58

标签: jquery

我希望能够点击列表项,然后点击退格键将其删除。我如何用jQuery做到这一点?

$('<li>Click Me</li>')
.appendTo('#list')
.click(function(){
   $(this).addClass('delete');
   $(this).focus(); // doesn't seem to do anything maybe??
})
.keypress(function(e){
    // this event handler doesn't fire
    var key = (e.keyCode ? e.keyCode : e.which);
    if (key === 8) {
        if ($(this).hasClass('delete'))
            $(this).remove();
    }
});

这是我的jsfiddle:

http://jsfiddle.net/prRVc/

看起来我无法将按键事件附加到列表项。

2 个答案:

答案 0 :(得分:3)

您无法在列表元素上使用焦点。你什么都没得到:) 尝试使用另一种解决方案,使用“delete”类为文档按键和进程列表创建单独的处理程序:

$(document).keypress(function(e){
    var key = (e.keyCode ? e.keyCode : e.which);
    if (key === 8) {
        $('li.delete').remove();
    }
});

答案 1 :(得分:1)

您需要尝试在文档级别使用密钥处理程序。此外,使用'keydown'而不是'keypress'更安全。工作示例:http://jsfiddle.net/DwX4e/

$('<li>Click Me</li>')
.appendTo('#list')
.click(function(){
   $(this).addClass('delete');
   $(this).focus();
})

$(document).on('keydown', function(e){
    if(e.keyCode === 8){
       $('li.delete').remove();
    }
});