:last不仅删除最后一个元素

时间:2012-12-01 01:54:33

标签: jquery

我正在尝试制作自己的搜索名称,类似于Facebook的搜索(自动填充),就像在facebook的撰写邮件中一样。我的整个脚本位于http://jsfiddle.net/6YbrP/4/

问题是我被这个代码所困:

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

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

感谢您的回复。

1 个答案:

答案 0 :(得分: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();
});​

你也有共同的设计错误, - 你总是使用绝对选择器,它会导致许多混淆代码只是比这个大一点。