Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从`$开始使用。每个`分别多次使用。?_Javascript_Jquery_Bind_Each - Fatal编程技术网

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(){
),并在新输入中搜索“在此处插入值”“有结果,但单击“结果搜索”后,在以下相同的新输入中显示输出时出现问题。再见: