1

Facebookの作成メッセージのように、自分の検索名であるfacebook-like-search(オートコンプリート)を作成しようとしています。私のスクリプト全体はhttp://jsfiddle.net/6YbrP/4/にあります。

問題は私がこのコードで立ち往生していることです:

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

ボックスをクリックしてからバックスペースボタンを押すと、最後の要素が削除されます。ただし、ボックスの内側をクリックしてからボックスの外側をクリックし、ボックスの内側をもう一度クリックして、バックスペースキーをもう一度押したときは違います。最後の要素だけでなく、最後の2つの要素を削除/削除しました。これはどのように起こりますか?そして、どうすればそれを修正できますか?

ご回答ありがとうございます。

4

1 に答える 1

2

Felix Kling が言ったように、キーアップを複数、固定コードにバインドするためです。

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 に答える