-1

我有以下正常工作的功能:

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

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

在所有预先存在的情况下:<input class="tags"/>该函数按其应有的方式执行(自动完成列表,即数据库转储)。

现在,这些输入实际上存在于 a<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 回答