0

リスト項目をクリックしてから、バックスペース キーを押して削除できるようにしたいと考えています。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/

キープレスイベントをリストアイテムに添付できないようです。

4

2 に答える 2

3

You can't use focus on the list element. You will get nothing :) Try to use another solution, create separate handler for document keypress and process lists with "delete" class:

$(document).keypress(function(e){
    var key = (e.keyCode ? e.keyCode : e.which);
    if (key === 8) {
        $('li.delete').remove();
    }
});
于 2012-12-09T07:27:37.003 に答える
1

ドキュメント レベルでキー ハンドラーを使用する必要があります。また、'keypress' の代わりに 'keydown' を使用する方が安全です。作業例: 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();
    }
});
于 2012-12-09T07:34:26.687 に答える