1

我正在尝试创建自己的搜索名称,类似 facebook 的搜索(自动完成),就像在 facebook 的撰写消息中一样。我的整个脚本位于http://jsfiddle.net/6YbrP/4/

问题是我被困在这段代码中:

.keyup(function(e){
            if(e.keyCode == 8 && $(this).val() == ''){
                $('#itemcontainer div.detailwrapper:last').remove();
            }
        });

它确实删除了最后一个元素,如果我只是单击该框,然后按退格按钮。但不是当我在框内单击,然后在框外单击,再次在框内单击,然后重新按退格键时。它删除/删除了最后一个元素,而不仅仅是最后一个元素。这怎么可能发生?我怎么能修好它?

感谢您的任何回复。

4

1 回答 1

2

正如Felix Kling所说 - 这是因为您绑定了多个keyup,固定代码:

if ($('#itemcontainer').html().trim()) {
    $('#searchnama').removeAttr('placeholder');
} else {
    $('#searchnama').attr('placeholder', 'Item');
}

$('.listcontainer').bind('click', function() {
    $('#searchnama').focus();
});
$('#searchnama').keyup(function(e) {
    if (e.keyCode == 8 && $(this).val() == '') {
        $('#itemcontainer div.detailwrapper:last').remove();
    }


    if ($('#itemcontainer').html().trim()) {
        $('#searchnama').removeAttr('placeholder');
    } else {
        $('#searchnama').attr('placeholder', 'Item');
    }
});
$('.remove').bind('click', function() {
    $(this).closest('div.detailwrapper').remove();
});​

你也有常见的设计错误, - 你总是使用绝对选择器,它可能会在代码上造成很多混乱,只是比这个大一点。

于 2012-12-01T09:21:27.010 回答