让我们开始吧;单击一个插入AJAX的LI元素,弹出一个带文本输入的对话框,当输入大于100时,提交信息以便对服务器进行验证。这是它的样子:
$("li").live("click", function() {
$("#dialog1").dialog('open');
$("#pin").focus();
$("#pin").keyup(function() {
var trigger = $("#pin").val;
if (trigger > 100) { // Submit for verification, otherwise do nothing }
}
});
我遇到的问题是它第一次正常运行。再次单击LI元素时,keyup函数将运行两次。如果再次单击它,它将运行三次。这是控制台转储的样子:
首先点击: 1 10 100
第二次点击: 1 1 10 10 100 100
第三: 1 1 1 10 10 10 100 100 100
任何想法都会非常感激。如果我错误地注射了我的AJAX,请告诉我。
答案 0 :(得分:6)
我认为您的问题是您不断向#pin元素添加事件处理程序。所以第一次只附加一个处理程序。第二次两个处理程序等等。
在点击处理程序之外移动$(“#pin”)。keyup。
答案 1 :(得分:0)
jQuery .live在1.9上删除了。这是正确的方法:
自jQuery 1.7以来,.live()方法已被弃用 在1.9中删除。我们建议升级代码以使用.on()方法 代替。要完全匹配$(“a.foo”)。live(“click”,fn),例如, 你可以写$(document).on(“click”,“a.foo”,fn)。更多 信息,请参阅.on()文档。在此期间,jQuery 迁移插件可用于恢复.live()功能。