2

示例我有 2 个 html 输入

<div class="wrap">        
   <input class="autocomplete" name="auto_1" />
   <input class="autocomplete" name="auto_2" />
</div>

并且正在使用 jQuery UI 自动完成并在文档准备好时auto_1触发auto_2$(function(){})

然后如果我们点击我网站上的一个按钮,就会有另一个按钮。按功能添加$('.wrap').append('<input class="autocomplete" name="auto_3" />')

现在总共将有 3 个输入

<div class="wrap">        
   <input class="autocomplete" name="auto_1" />
   <input class="autocomplete" name="auto_2" />
   <input class="autocomplete" name="auto_3" />
</div>

但是自动完成功能没有运行,auto_3因为它是新添加的。

如何让它运行/使用自动完成?

4

2 回答 2

2

我认为问题不在于单击新输入,而在于新输入的自动完成。当您添加新元素时

$('.wrap').append('<input class="autocomplete" name="auto_3" />')

您必须将自动完成附加到这个新字段,所以

$('input[name="auto_3"]').autocomplete();

或者使用 livequery 插件进行自动完成:https ://stackoverflow.com/a/4551313/657584

于 2012-05-20T21:09:36.183 回答
1

使用.on()http ://api.jquery.com/on

$('.wrap').on('click', '.autocomplete', function(){
    // your code here
    // $(this).autocomplete(); // or whatever.
});

使用.on()您将单击处理程序委托给将添加到 DOM 的现有和未来元素的方法,类似于(新)弃用(来自 jQ 1.7).live()

从文档:

$("a.offsite").live("click", function(){ alert("Goodbye!"); });   // jQuery 1.3+
$(document).delegate("a.offsite", "click", function(){ alert("Goodbye!"); });  // jQuery 1.4.3+
$(document).on("click", "a.offsite", function(){ alert("Goodbye!"); }); // jQuery 1.7+
于 2012-05-20T21:04:55.980 回答