Javascript 从`$开始使用。每个`分别多次使用。?
搜索后,单击结果搜索并单击示例中输入“在此处插入值”旁边的加号(按钮添加输入),在新输入Javascript 从`$开始使用。每个`分别多次使用。?,javascript,jquery,bind,each,Javascript,Jquery,Bind,Each,搜索后,单击结果搜索并单击示例中输入“在此处插入值”旁边的加号(按钮添加输入),在新输入$('.auto_complete')。键控(函数(){…不起作用 我认为必须单独绑定事件,并使用闭包,以便每个元素都有自己的变量集(或更改逻辑,以便只使用字段中的值,而不需要任何状态变量) 怎么样 例如: Js完整代码: 元。每个: var ac = $(this).text(); var ok = $.grep(data, function (e) { return e.name == ac; }
$('.auto_complete')。键控(函数(){…
不起作用
我认为必须单独绑定事件,并使用闭包,以便每个元素都有自己的变量集(或更改逻辑,以便只使用字段中的值,而不需要任何状态变量)
怎么样
例如:
Js完整代码:
元。每个:
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");
});
var ac=$(this).text();
var ok=$.grep(数据,函数(e){
返回e.name==ac;
})[0]。单位;
$。每个(确定,功能(bu,键){
//警报(键、名称和单位);
$(“”).hide().fadeIn('slow').append(“”+key.name_单位+“”,$(“”)).appendTo(“.list_单位”);
});
它运行得很好,但我看不到您提供的代码中向输入框添加事件处理程序的任何地方
问题在顶部的某个地方:
$('.auto_complete').bind('keyup',function () {
/* ... */
});
加载页面时,它会将多个事件处理程序绑定到输入框等。创建新的事件处理程序时,不会添加此功能,除非您使用jQuery或类似工具。如文档所述:
此方法[.live()
]是用于将事件处理程序附加到元素的基本.bind()
方法的变体。调用.bind()
时,jQuery对象引用的元素会附加处理程序;稍后引入的元素不会附加处理程序,因此它们需要另一个.bind()
调用
我真的不想费力地处理所有嵌套的
单击
和委派
和绑定
调用,但我向您保证这就是问题所在。要解决它,您可能需要在新创建的节点上运行autocomplete部分,使用.live
,或者只使用原始的部分。stion还不清楚,如果你有一个工作块,试着一个接一个地解决问题,然后在此基础上构建。缩进你的代码,你将从无所不知变成噩梦。如果你一开始就没有缩进,你就无法掌握工作流。你会在字段中看到和搜索值salam
“在此处插入值”并单击此字段旁边的“结果”“现在它是一个加号”(按钮添加输入),您可以单击它加号,在“新字段不起作用”$。每个
(结果集搜索).为什么?我就是不能理解你的代码。那里有很多,如果你能设法创建一个精简的案例小样本,那么我们可能可以提供帮助。我怀疑有人会接受这一点,就像现在这样。你的完整JS代码是不可理解的。如果你不能在你的代码中分离出具体的问题并只显示出来那就是说,你的代码没有很好地抽象。请学习如何正确地组织和抽象你的javascript代码。你可以在上面的帖子中看到我修改后的代码很简单。可以吗?我用。live
代替。bind
,在新的输入中有结果搜索,但在点击结果搜索后,出现了问题。!?见:@RC-yo搜索值后新输入的代码,没有结果搜索。!?我从$('.auto_complete')。绑定('keyup',function(){
)到$('.auto_complete')。live('keyup',function(){
),并在新输入中搜索“在此处插入值”“有结果,但单击“结果搜索”后,在以下相同的新输入中显示输出时出现问题。再见: