避免javascript中的函数关闭

时间:2013-09-27 08:43:50

标签: javascript jquery function closures

我想将回调链接到每个输入(类型文本)与类'liveVariable':

$(".liveParameter").keyup(function(){
    var callBackString= 'skp:change-'+$(this).attr('id')+'@'+$(this).attr('value');
    window.location = callBackString;               
});

然而,这给了我一个奇怪的错误。值pass是输入字段的初始值(每次触发事件时)。

我不明白为什么这不起作用。我不认为我有一个闭包,局部变量callBackString在被调用函数中创建。所以应该每次创建它?

如何以优雅的方式解决这个问题? (我不想为每个输入字段创建一个调用,因为我有很多实时参数..)

2 个答案:

答案 0 :(得分:1)

尝试更改:

var callBackString= 'skp:change-'+$(this).attr('id')+'@'+$(this).attr('value');

...为:

var callBackString= 'skp:change-'+$(this).attr('id')+'@'+$(this).val();

有关.val()功能的更多详细信息,请参见jQuery docs website here

修改

为了优雅,性能和评论的贡献,以下解决方案最终将是最好的:

$(".liveParameter").keyup(function(){
    var input = $(this);
    var callBackString = 'skp:change-' + input.attr('id') + '@' + input.val();
    window.location = callBackString;
});

答案 1 :(得分:1)

更改代码

$(this).attr('value'); // get the initial value

$(this).val(); // get the current and updated value

http://jsfiddle.net/FjgLB/