我使用以下代码创建自动完成文本框。 jQuery如下。
$(function() {
$( "#items .slno" ).autocomplete({
source: 'search.php'
});
});
HTML如下。
<table id="items">
<tr class="item-row">
<td class="item-name"><div class="delete-wpr"><a class="delete" href="javascript:;" title="Remove row">-</a></div></td>
<td><input type="text" id="slslno" class="slno"/></td>
<td><input type="text" class="cost"/></td>
<td><input type="text" class="qty"/></td>
<!-- <td><span class="price"></span></td>-->
<td class="price"></td>
<a class="add" id="addrow" href="javascript:;" title="Add a row">+</a> </tr>
</table>
自动完成适用于第一行。但是,当通过单击&#34;添加行&#34;创建第二行时上面代码中的按钮(一切正常),Auto_complete只是不在后续行上工作。我整理出来,我需要一个委托的处理程序。那我该如何将当前的jQuery选择器转换为委托的呢?
我有点根据答案将其写成以下内容,但它仍无效。
$('#items').delegate('#items .slno','keyup', function () {
$(this).autocomplete({
source: 'search.php'
});
});
然后我继续使用以下内容。
$(function(){
$('#items').on('.slno','keyup.autocomplete', function(){
$(this).autocomplete({
source : 'search.php'
});
});
});
它也失败了。我如何实现这一目标?
在上面的例子中,事件的顺序搞砸了。只需要使用正确的语法
$(selector).on(event,childSelector,data,function,map)
这使我的代码如下所示。
$(function(){
$('#items').on('keyup.autocomplete','.slno', function(){
$(this).autocomplete({
source : 'search.php'
});
});
});
它完成了任务!!!
答案 0 :(得分:0)
下面的代码对我来说就像一个魅力。
$(function(){
$('#items').on('keyup.autocomplete','.slno', function(){
$(this).autocomplete({
source : 'search.php'
});
});
});