我正在尝试使用jQuery.tmpl构建一个复选框列表 它会列出一个项目数组,附近有一个复选框,我想以参数方式检查其中一些复选框......
模板代码为:
<ul>
{{each(i,val) Values}}
<li>
<input type="checkbox" {{if $.inArray(i, Default) != -1}} checked="checked"{{/if}}>
<em>${val}</em>
</li>
{{/each}}
</ul>
和模板定义:
<script type="text/javascript">
$(document).ready(function() {
$('#tpl_selector').tmpl({
Default: [1,2],
Values: {
1: 'Item 1',
2: 'Item 2',
3: 'Item 3'
}
}).appendTo('#area');
});
</script>
因此,在这种情况下应检查第1项和第2项。创建列表没有问题,但{{if $.inArray(i, Default) != -1}} checked="checked"{{/if}}
部分无效。
但是,当我用数字替换'i'时,它可以工作:
{{if $.inArray(1, Default) != -1}} checked="checked"{{/if}}
我根本没有任何意义......你有什么建议吗?
填充复选框的另一个逻辑也可以,就像我不知道smt。像渲染完成后的回调函数,或者... ...
答案 0 :(得分:4)
在JavaScript对象中,键始终为字符串。您的Default
数组包含数字,但您传入的“针头”(i
)是字符串,因此{{1} }将始终返回$.inArray
,。
其中任何一个都有效:
false
成为正确的数组,而不是由包含数字的字符串“索引”的对象。
Values
成为一个字符串数组。
Defaults
密钥(parseInt()
)传递给Values
时,i
。我认为这是一个丑陋的修复。
哦,欢迎来到Stack Overflow!