我正在尝试创建一个表单,其中的值会根据选择中的更改或文本字段中的更改进行更新。
我从
开始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 事件,然后创建一个单独的函数,但这似乎不是有效的代码。
最佳答案
它将 change
和 keyup
附加到 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/