0

我有一个具有更改处理程序的组合框 - switch()

function switch() {
    var type= $('#ddType').val();
    search.keydown(function (event) {
         if (type == "SomeCode" &&....
}

每次更改组合框值时都会触发此代码(ko)但是在keydown处理程序类型变量中始终具有组合框的第一个默认值,因此我必须执行类似的操作

search.keydown(function (event) {
    type = $('#ddType').val();
    if (type == "SomeCode" &&....
}

为什么?如果方法的第一行中的类型再次正常工作并将类型值更改为当前选择的值并且每​​次更改组合框选择时都会初始化一个按键事件?为什么按键类型值具有旧的第一个值?谢谢

4

3 回答 3

1

这种行为的原因是每次按键事件都会添加一个新的处理程序,但它只会触发第一个。所以第一个使用旧值运行。解决方案 - 在添加新的处理程序之前取消绑定处理程序。

function switch() {
    search.unbind('keydown');
    search.keydown(function (event) {
         if (type == "SomeCode" &&....
}
于 2012-10-30T09:38:26.980 回答
0

bfavaretto 是对的。开关是保留的,不能用作函数名。

于 2012-10-29T19:43:40.250 回答
0

尝试使用keyup而不是keydown

于 2012-10-30T08:38:13.317 回答