搜索并单击结果搜索并单击示例中输入“INSERT VALUE HERE”旁边的加号(按钮添加输入),在新输入$('.auto_complete').keyup(function () { ...
中不起作用。
我认为必须单独绑定事件并使用闭包,以便每个元素都有自己的一组变量(或更改逻辑,以便只使用字段中的值,不需要任何状态变量),
怎么回事?
示例:see here
Js完整代码:http://jsfiddle.net/6yPxn/
每$:
var ac = $(this).text();
var ok = $.grep(data, function (e) {
return e.name == ac;
})[0].units;
$.each(ok, function (bu, key) {
//alert(key.name_units);
$("<div class='mediumCell'/>").hide().fadeIn('slow').append('<b>' + key.name_units + '</b>', $('<div class="column" style="float: left;" />')).appendTo(".list_units");
});
答案 0 :(得分:1)
它运行正常,但我没有看到你在输入框中添加事件处理程序的代码中的任何地方。
问题发生在http://www.binboy.gigfa.com/files/js/admin.js,位于顶部:
$('.auto_complete').bind('keyup',function () {
/* ... */
});
当页面加载时,它会将几个事件处理程序绑定到输入框等。当您创建一个新功能时,除非您使用jQuery的.live
或类似内容,否则此功能将不添加。正如文档所述:
此方法[
.live()
]是用于将事件处理程序附加到元素的基本.bind()
方法的变体。调用.bind()
时,jQuery对象引用的元素将附加处理程序;稍后介绍的元素不会,因此需要进行另一次.bind()
调用。
我真的不想涉及所有嵌套的click
和delegate
以及bind
来电,但我向你保证这就是问题所在。要解决此问题,您可能需要在新创建的节点上运行自动填充功能部分,而不是使用.live
或仅使用.clone
原始部分。