2011-08-09 86 views
1

我有一个jQuery模板,有N个单选按钮,我需要选择单选按钮,其值是从外部html文件(使用jQuery.tmpl()方法)加载模板后传递的值。在没有多个{{if}},{{else}}语句,重复代码和选择器的模板中,是否有选择模板中单选按钮的好方法?jquery模板选择

回答

3

您的数据以什么格式从服务器返回?如果它是一个JSON数组,你能做这样的事吗?

HTML:

<script id="myTemplate" type="text/html"> 
    <input type="radio" value="${value}"{{if selected}} checked{{/if}}>${name}</input><br /> 
</script> 

<div id="myDiv"> 
</div> 

的javascript:

var myData = [ 
    {name: 'test 1', value : 'radio1', selected : false}, 
    {name: 'test 2', value : 'radio2', selected : false}, 
    {name: 'test 3', value : 'radio3', selected : true}, 
    {name: 'test 4', value : 'radio4', selected : false} 
]; 

$('#myTemplate').tmpl(myData).appendTo('#myDiv'); 

http://jsfiddle.net/JbTwB/1/

1

如果你有所需的无线电的值,你可以这样做:

jInstance.find('input[value=' + desiredValue + ']').attr('checked', true); 

这假定jInstance是模板的新创建的副本,而desiredValue准确的值相匹配您希望预先选择的单选按钮。

如果您只知道部分值,则可以使用其他jQuery选择器来定位该输入。

如果您正在寻找更为一般的“表单预填充”例程,您需要建立一些格式来存储预填充值集合以及从该格式到模板的映射。但它可以做到,也不一定那么难。

+0

我写了没有选择!我有一个太大的文件(控制器),加载大量的模板(视图),我试图删除多余的选择器。 – 2xMax

+0

为了操作DOM元素,您需要获取对节点的引用。生成该引用将需要:ID(最快,但带有唯一性约束)或更广义的选择器。除非你想把标记作为一个巨大的字符串来处理,或许用正则表达式。哪个表现糟糕而且非常脆弱。使用选择器将避免使用重复的代码和大量的“if/else”块。 – Tom

+0

也许您可以将模板请求中的所需值传递给服务器,并且服务器可以在发送响应之前修改生成的标记。但是这种方法不是基于JavaScript的,您需要重新标记问题才能获得答案。 – Tom