我有一个具有更改处理程序的组合框 - switch()
function switch() {
var type= $('#ddType').val();
search.keydown(function (event) {
if (type == "SomeCode" &&....
}
每当我更改组合框值(k.o)时,此代码都会触发 但是在keydown处理程序中, type 变量始终是组合框的第一个默认值,所以我必须做类似的事情
search.keydown(function (event) {
type = $('#ddType').val();
if (type == "SomeCode" &&....
}
为什么?如果方法第一行中的类型再次正常工作并且将类型值更改为当前选定值,并且每次更改组合框选择时都会初始化按键事件?为什么keypress type 值具有旧的第一个值? THX
答案 0 :(得分:1)
这种行为的原因是每次按键事件都会添加一个新的处理程序,但它只会触发第一个处理程序。所以第一个用旧值操作。 解决方案 - 在添加新处理程序之前取消绑定处理程序。
function switch() {
search.unbind('keydown');
search.keydown(function (event) {
if (type == "SomeCode" &&....
}
答案 1 :(得分:0)
bfavaretto是对的。 Switch保留,不能用作函数名。
答案 2 :(得分:0)
尝试使用keyup
代替keydown