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

尼尔明白了。我全都看错了。

我需要将 .on 与自动完成而不是 addNewRow 函数一起使用。

所以我改变了这个

$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 回答