我正在使用rails项目作为前端开发人员,我们使用twitter bootstrap ..所以我有一些搜索模式,当你输入内容并点击输入然后调用ajax并且搜索字段显示结果。 。
$('#search_term').live("keyup", function(event) {
if (event.keyCode == '13') {
doSearch(this);
}
});
当你点击进入时,有2个ajax调用..
我通过在live之前调用die()来修复它,现在它只发送一个请求,就像它应该有的那样..但是我不明白是什么问题?!
$('#search_term').die("keyup").live("keyup", function(event) {
if (event.keyCode == '13') {
doSearch(this);
}
});
任何人都可以解释为什么会这样吗?!
答案 0 :(得分:0)
如果使用die()你可以解决问题,那么你可能会多次调用live方法。
$('#search_term').on("keyup", function(event) {
if (event.keyCode == '13') {
console.log("ENTER!")
}
});
$('#search_term').on("keyup", function(event) {
if (event.keyCode == '13') {
console.log("ENTER!")
}
});
(重新编写代码,因为它已被弃用)
试试这个fiddle并打开开发者控制台。如果在输入内按Enter键,它将多次调用console.log() 在这个例子中,您要为keyup事件添加新功能,结果是当触发键盘时将触发所有功能。 相反.die(现在它是.off)删除以前添加的功能。见这个例子:
$('#search_term').off("keyup").on("keyup", function(event) {
if (event.keyCode == '13') {
console.log("ENTER!")
}
});
$('#search_term').off("keyup").on("keyup", function(event) {
if (event.keyCode == '13') {
console.log("ENTER!")
}
});
现在尝试修改此fiddle,看看该函数只被调用一次。