我怎样才能让点击的项目 show/hide 它的隐藏元素?

How do I can get a clicked item to show/hide its hidden elements?

我在显示 clicked 项隐藏元素时遇到了一些问题。

在下面找到我的点击事件代码。

'click .stylishTiles'(event, instance) {
   event.preventDefault();
   var selectedTile = this._id;

   Session.set("selectedTile_id2", selectedTile);

   $("#hidden").show(300);
   $(".selected").addClass('show');
  },

'click .show'(event, instance) {
   event.preventDefault();

   $("#hidden").hide(300);
   $(".stylishTiles").removeClass('show');

} 

clicked 事件中的 Session.set("selectedTile_id2", selectedTile) 通过 Session.get('selectedTile_id2') 传递给 helper

在下面找到目标 帮助程序 代码:

'selectedTile': function () {

    var selectedTileId = this._id;
    var selectedTile_id2 = Session.get('selectedTile_id2');

    if(selectedTileId == selectedTile_id2){
        return "selected"
    }
} 

并在下面找到目标模板的代码:

<template name="invoicesV2C">

{{#each pendingInvoicesV2C}}

    <div class="well well-sm stylishTiles {{selectedTile}}">

        <div id ="invoiceAmount"> KES: {{formatCurrency recipientAmount}} </div>

        <div id="hidden"> tel: {{recipientNumber}} <br> purpose: {{invoicePurpose}} </div>  

    </div>                      

{{/each}}

</template>

模板中的 {{#each pendingInvoicesV2C}} 正确生成了多个项目,同时由于 CSS 代码[=21= 而默认正确隐藏了它们的隐藏元素]

#hidden{
display: none;
}

最理想的效果是当我点击任何项目时,它的隐藏元素是:<div id="hidden"> tel: {{recipientNumber}} <br> purpose: {{invoicePurpose}} </div> 应该 show,因此

 $("#hidden").show(300);
 $(".selected").addClass('show');

反过来,每当我点击一个已经显示其元素的项目时,再次是:<div id="hidden"> tel: {{recipientNumber}} <br> purpose: {{invoicePurpose}} </div>它应该被隐藏。

目前,无论我点击哪个项目,只有项目列表中的第一个元素 show/hide 它的元素。

请帮助我了解如何让点击的元素显示其隐藏的详细信息?

你有很多错误以及非常扭曲的逻辑。

让我帮你简化一下:

CSS: 我们使用 class 而不是 id

.hidden {
  display: none;
}

模板:

<template name="invoicesV2C">
  {{#each pendingInvoicesV2C}}
    <div class="well well-sm stylishTiles">
      <div class="invoiceAmount">
        KES: {{formatCurrency recipientAmount}}
      </div>
      <div class="toggled hidden">
        tel: {{recipientNumber}}
        <br>
        purpose: {{invoicePurpose}}
      </div>  
    </div>                      
  {{/each}}
</template>

模板代码:

Template.invoicesV2C.events({
  'click .stylishTiles'(event) {
    event.preventDefault();
    const $e = $(event.target).closest('.stylishTiles');
    $e.find('.toggled').toggle(300);
  }
});

就是这样。您甚至根本不需要助手和使用 Session

这是一个很小的 ​​fiddle,表示它是如何工作的:https://jsfiddle.net/iStyx/ff6hvorz/