javascript - 为什么这个 jquery live 会进入一个无限循环,而一个几乎相同的 jquery 却没有?

标签 javascript jquery

我正在尝试创建一个表单,其中的值会根据选择中的更改或文本字段中的更改进行更新。

我从

开始
jQuery('select[name=measure]','form').live('change',function(){
 alert('triggered');
});

然后我在用户更改文本框时添加了 keyup

jQuery('select[name=measure],input[name=amount]','form').live('change keyup',function(){
  alert('triggered');
});

出于某种原因,当我选择一个选项时,这会进入无限循环,并在键入时多次触发(尽管不是无限次)。

当我变成

...live('keyup', function()...

对文本框的更改只会触发一次。 我可以将它们分成两个单独的 .live 事件,然后创建一个单独的函数,但这似乎不是有效的代码。

最佳答案

它将 changekeyup 附加到 select[name=measure]input[name=amount].

我怀疑您希望输入有一个更改事件,而选择有一个按键事件。

我建议您将这两个现场事件分开。您可能也不需要 form 选择器。

$('select[name=measure]').live('change', SomeFunction);

$('input[name=amount]').live('keyup', SomeFunction);

function SomeFunction() {
    // this isn't inefficient
}

工作示例:http://jsfiddle.net/K7586/


或者你可以使用delegate()

$("form")
    .delegate("input[name=amount]", "keyup", SomeFunction)
    .delegate("select[name=measure]", "change", SomeFunction);

function SomeFunction() {
    // this isn't inefficient
}

关于javascript - 为什么这个 jquery live 会进入一个无限循环,而一个几乎相同的 jquery 却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5020379/

相关文章:

javascript - 使用 Javascript 鼠标移动时两种颜色之间的过渡

javascript - 在第一次单击时添加类并在第二次单击按钮时向下滚动

jQueryUI 可对表行进行排序,在拖动时缩小它们

javascript - Jquery nth-child 仅适用于第一个和最后一个子级

javascript - 在 Bootstrap 3 中动态创建模态对话框

javascript - 单引号 (') 后的原子红色突出显示

javascript - 在 D3s x 轴刻度标签上添加工具提示

javascript - 具有单个元素的 RegisterArrayDeclaration

javascript - 我可以向用户隐藏一些 Javascript 代码吗?

javascript - 等到 gobalEval 完成