0

重複の可能性:
.live() を使用して jQuery UI オートコンプリートをバインドする

私はこれを理解できないようです。.load() または .on() のいずれかを使用する必要があると思いますが、どちらも機能させる方法がわかりません。

だから私は3行のテーブルを持っています。ユーザーが 3 つの行に記入したら、さらに提供したいと思います。

最後の行に入力すると、このスクリプトが呼び出されます。

function addNewRow(id)
{
    var qty = $('#qty' + id).val();
    if (qty > 0)
    {
        $('#quickaddtable').append('<?php echo createRow(($i+1)); ?>');
    }
}

問題は、オートコンプリートを使用していて、新しく作成された行では機能しないことです。DOM をリロードする必要があることはわかっていますが、これを簡単に行う方法がわかりません。

$(function(){  

    $(".id").autocomplete({ 
            //My Code
    });  
}); 

これは簡単な答えだと思いますが、ほとんどすべての例が .on("click",...) を示しました

4

2 に答える 2

0

ニールはそれを手に入れました。私はそれをすべて間違って見ていました。

addNewRow 関数ではなく、オートコンプリートで .on を使用する必要がありました。

だから私はこれを変更しました

$j(function(){  

    //attach autocomplete  
    $j(document).on("keyup.autocomplete", '.autocomplete', function(){
        $j(this).autocomplete({
                   //My Code
            });
    });

})

助けてくれてありがとう。私はこれを見て何時間も費やしましたが、数分であなたたちは再びありがとうと答えました. ニールは答えを投稿しなかったので、彼の功績を認める方法はありますか?

于 2012-07-10T00:26:25.350 に答える
-1

ここでの問題は、 $('.id')セレクターが使用されている場合、新しい行がまだ存在しないことです。さらに行を追加すると、「.id」に一致する新しい要素は、以前に呼び出したメソッドにバインドされません。

ドキュメントへのバインディングをいじるよりも、挿入後に を再バインドするだけです ( $(document).on('event'))。したがって、次のようになります。

$('#quickaddtable').append( ... );
$('.id').autocomplete("destroy");
$('.id').autocomplete({ ... });
于 2012-07-09T16:25:12.057 に答える