0

我想使用类“liveVariable”将回调链接到每个输入(类型文本):

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

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

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

我怎样才能优雅地解决这个问题?(我不想为每个输入字段创建一个调用,因为我有很多实时参数..)

4

2 回答 2

1

尝试改变:

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

...至:

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

.val()有关该函数的更多详细信息,请参见此处的 jQuery 文档网站

编辑:

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

$(".liveParameter").keyup(function(){
    var input = $(this);
    var callBackString = 'skp:change-' + input.attr('id') + '@' + input.val();
    window.location = callBackString;
});
于 2013-09-27T08:46:25.450 回答
1

更改您的代码

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

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

http://jsfiddle.net/FjgLB/

于 2013-09-27T08:47:30.187 回答