我有一个TaffyDB,其中包含来自RPG的项目的配方。每个项目都有一个布尔值来声明它是否在游戏中“混合”。
var recipes = TAFFY([
{id:0, name:'Potion', mixed:false},
{id:1, name:'Hi-Potion', mixed:false},
{id:2, name:'Mega-Potion', mixed:false}
]);
生成HTML表格,每个配方都有一个表示“混合”变量的复选框。每个复选框都有value=X
,其中X
对应于数据库中项目的ID。我检测到复选框更改并尝试使用以下内容更新数据:
$('input:checkbox').on('change', function() {
var val = $(this).val();
var checked = $(this).is(':checked');
recipes({id:val}).update({mixed:checked});
alert('Updated recipe id: ' + val +
'\nRecipe: ' + recipes({id:val}).first().name +
'\nValue should be ' + checked +
'\nValue is ' + recipes({id:val}).first().mixed);
}
尝试使用recipes({id:val}).first().name
和.mixed
获取变量时,始终会返回undefined
。更新调用也不会更改值。但是,如果我将所有查询更改为recipes({id:0})
,它可以正常工作,但它只会报告并更新第一个复选框。
据我所知,在执行val
等查询时,它不喜欢javascript变量checked
和recipes({id:val})
,但对于文字{{1 }}
JSFiddle:http://jsfiddle.net/w6g6W/12/
答案 0 :(得分:1)
事实证明$(this).val()
正在返回一个字符串,而不是一个int。
用var val = $(this).val();
var val = parseInt($(this).val());