【发布时间】:2011-10-05 18:23:58
【问题描述】:
我试图在单击按钮时更改模板中一个或多个元素的类别。我收到的样本通常都找到一个带有 .tmplItem 的项目,我不太清楚如何实现我想要做的事情。这或多或少是一个概念证明。
我的结构如下。
var messages = [
{ Body: "Testing 1", Read: "0" },
{ Body: "Testing 2", Read: "1" },
{ Body: "Testing 3", Read: "0" },
{ Body: "Testing 4", Read: "1" }
];
我的模板是:
<script id="messageTemplate" type="text/html">
{{if Read == "1"}}
<tr class="hdnMessage">
<td class="hdnMessage" >
<input type="checkbox" id="cbHasReadMessage" checked="checked">
</td>
{{else}}
<tr class="showMessage">
<td><input type="checkbox" id="cbHasReadMessage"></td>
{{/if}}
<td>${Body}</td>
</tr>
</script>
css 是:
<style type="text/css">
.hdnMessage
{
display:none;
}
.showMessage
{
display:block;
}
</style>
我在模板之外有一个按钮
<input type="button" value="Show Read Messages" id="btnShowHideReadMessages" />
我为它添加了一个点击事件:
$("#btnShowHideReadMessages").click(function() {
if (showingReadMessages) {
showingReadMessages = false;
$(this).val("Show Read Messages");
//try to find checked checkboxes and set the class of the tr which is its parent
}
else {
showingReadMessages = true;
///Try finding all the current hidden TRs
var hdnMessages = $("tr.hdnMessage").tmplItem();
var hdnMsg = hdnMessages.data;
var hdnElement = hdnMessages.nodes;
$(hdnElement).replaceWith($('.showMessage'));
}
});
最后一个脚本片段不完整,因为我不知道如何让它工作。任何帮助将不胜感激。
【问题讨论】:
-
您将每个复选框设置为
id="cbHasReadMessage",这是不允许的。将 ID 更改为类。 -
感谢您指出这一点。我很习惯让 .net 为我忘记的行级复选框命名。