【问题标题】:Selecting multiple elements within a jquery template在 jquery 模板中选择多个元素
【发布时间】: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 为我忘记的行级复选框命名。

标签: jquery jquery-templates


【解决方案1】:

从模板中完全删除class="showMessage",然后将代码的底部更改为如下内容:

$("#btnShowHideReadMessages").click(function() {  
     $("tr.hdnMessage").toggleClass('hdnMessage');
});

【讨论】:

  • 似乎不起作用。我收到对象不支持该方法的错误。由于 tr 在模板中,您可以像这样引用 tr 吗?我还注意到我将 td 设置为隐藏。我要检查一下是否是问题所在。
  • 这确实有效。语法是 $("tr.hdnMessage").toggleClass('hdnMessage');
  • 如果有人对显示和隐藏机制感兴趣,我做了以下操作: $("#btnShowHideReadMessages").click(function() { if (showingReadMessages) {showingReadMessages = false; $(this ).attr('value', '显示已读消息'); $("input.cbMessage:checked").parent().parent().toggleClass('hdnMessage'); } else { showsReadMessages = true; $( this).attr('value', '隐藏已读消息'); $("tr.hdnMessage").toggleClass('hdnMessage'); } });
猜你喜欢
  • 2014-10-01
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多