流星:点击按钮显示一些内容

时间:2015-02-05 10:47:48

标签: javascript jquery meteor

我在Meteor遇到了问题。

我想在单击按钮时显示和隐藏模板的一部分(例如,显示问题的答案)。

问题是模板的这一部分是动态创建的,我只是想揭示与按钮相关的答案。所以你不能只有一个模板助手,需要返回“true”来显示答案,因为然后点击一个按钮就会显示每个答案。

    <template name="cardList">
      {{#each card}}
        <div class="card">
          <h3>{{frontsideText}}</h3>
          <p class="answer">{{backsideText}}</p>
          <button class="btn btn-danger deleteButton">delete</button> 
          <button class="btn btn-default showButton">show Answer</button> 
        </div>
      {{/each}}
    </template>

我尝试使用jQuery,它有点像。类似的东西:

Meteor.startup(function () {
  $(".answer").hide();
}

Template.cardList.events({
"click .showButton": function(event) {
  $(event.target).prevAll(".answer").first().show();
}

但这不起作用,因为之后每个新添加的问题或其他任何有答案都会显示,因为它们只是在启动时隐藏。我想我需要将hide()函数放在其他地方,但我不知道在哪里。

有没有办法用Meteor和没有jQuery解决这个问题?

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点,这里有两个:

<强> 1。使用流星 您可以创建一个名为 card 的新模板,将其放入{{#each card}}并使用以下事件。每当呈现新卡时,这将隐藏答案。

Template.card.rendered = function(){
    this.$("p.answer").hide();
};

<强> 2。更改您的代码段以使用JQuery 问题是你以错误的方式隐藏你的元素。你不应该用js隐藏它,而是用css。这样它默认是隐藏的。

.card p.answer{
  display: none;  
}

无论哪种方式都可以使您的点击事件代码有效。就个人而言,我结合了我建议的选项:为卡片制作一个模板(它更干净/更容易在包含很好的模板上工作)并调整css,使其默认隐藏。

如果您有任何其他问题,请告诉我