-1

私は正しく動作する次の関数を持っています:

        $(function() {
                var availableTags  = <? echo htmlspecialchars($jsEnc,ENT_NOQUOTES,'utf-8');?>;

                $( "input.tags" ).autocomplete({
                    source: availableTags
                });
        });

既存のすべての場合:<input class="tags"/>関数は正常に動作します(データベースダンプであるオートコンプリートリスト)。

現在、これらの入力は実際にはに存在し、<table>その場で追加または削除できる行があります。

テーブルにセルを追加するときは、次のようにします。

if(i== document.getElementById("soldTo").cellIndex){ element2.setAttribute('class','tags'); }

これにより、基本的に、入力(element2)がjquery関数のターゲット(少なくとも私が思った)になることができるようになります。

jquery関数はこの新しい要素を「意識」しておらず、新しいメンバーを表示するには何らかの方法で再初期化する必要があると想定しています。

これは本当ですか?これは、新しい要素を追加するときに行われますか?ある種$(x).add(myBehavior)

編集

私は次のことを試しました:

$("table.inventoryItems").bind("DOMSubtreeModified", function() {
alert('z');
     $( "input.tags" ).autocomplete({
       source: availableTags
      });
 });

また、アラートはトリガーされません。

疑わしい点はありますか?

ありがとうございました

適切なソリューション外部リンク

ajaxで取得された要素のjqueryオートコンプリート

4

1 に答える 1

1

DOMSubtreeModifiedイベントを試す:

$("table").bind("DOMSubtreeModified", function() {
     $( "input.tags" ).autocomplete({
        source: availableTags
     });
});

またはon()、新しい入力要素の作成方法に基づいたメソッドを使用できます。

$("table").on("change", "input.tags", function() {
     $(this).autocomplete({
        source: availableTags
     });
});
于 2012-07-01T03:34:29.817 に答える