几次使用`$ .each`分开。?

时间:2011-09-10 07:58:18

标签: javascript jquery bind each

搜索并单击结果搜索并单击示例中输入“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");
});

1 个答案:

答案 0 :(得分:1)

它运行正常,但我没有看到你在输入框中添加事件处理程序的代码中的任何地方。

问题发生在http://www.binboy.gigfa.com/files/js/admin.js,位于顶部:

$('.auto_complete').bind('keyup',function () {
 /* ... */
});

当页面加载时,它会将几个事件处理程序绑定到输入框等。当您创建一个新功能时,除非您使用jQuery的.live或类似内容,否则此功能将添加。正如文档所述:

  

此方法[.live()]是用于将事件处理程序附加到元素的基本.bind()方法的变体。调用.bind()时,jQuery对象引用的元素将附加处理程序;稍后介绍的元素不会,因此需要进行另一次.bind()调用。

我真的不想涉及所有嵌套的clickdelegate以及bind来电,但我向你保证这就是问题所在。要解决此问题,您可能需要在新创建的节点上运行自动填充功能部分,而不是使用.live或仅使用.clone原始部分。