我正在尝试制作自己的搜索名称,类似于Facebook的搜索(自动填充),就像在facebook的撰写邮件中一样。我的整个脚本位于http://jsfiddle.net/6YbrP/4/。
问题是我被这个代码所困:
.keyup(function(e){
if(e.keyCode == 8 && $(this).val() == ''){
$('#itemcontainer div.detailwrapper:last').remove();
}
});
它确实删除了最后一个元素,如果我只是单击该框然后按退格按钮。但是当我在框内单击时,然后在框外单击,再次在框内单击,然后重新按退格键。它删除/删除了最后两个元素,而不仅仅是最后一个元素。怎么会发生这种情况?我怎么能修好它?
感谢您的回复。
答案 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();
});
你也有共同的设计错误, - 你总是使用绝对选择器,它会导致许多混淆代码只是比这个大一点。