Meteor不会运行jQuery代码

时间:2016-06-12 13:54:47

标签: javascript jquery meteor meteor-blaze

我正在尝试运行一个显示和隐藏表单的jQuery代码块,但无法找到让Meteor在客户端运行代码的方法。这是我正在尝试使用的代码:

if (Meteor.isClient) {
    Template.post.onRendered(function(){
      $(document).ready(function(){
        $('.replybtn').click(function(){
          if( $(this).parent().next().css('display') === 'none' ){
            $(this).parent().next().css('display', 'block');
          } else {
            $(this).parent().next().css('display', 'none');
          }
        });
      });
    });
}

我也尝试将代码放在脚本标记中,但这不起作用。奇怪的是,只有代码的jQuery部分在粘贴到浏览器控制台时才能正常工作 - 这意味着错误可能在于我如何在Meteor中运行代码,而不是jQuery本身。此外,我已经确认模板名称是正确的,并且无法想到可能导致此问题的任何其他问题。关于为什么jQuery代码可能没有运行的任何想法?

2 个答案:

答案 0 :(得分:1)

当Meteor提供将事件处理程序附加到模板的简单工具时,您尝试应用传统的jQuery模式。这将是一个流星的方式:

if (Meteor.isClient) {
  Template.post.events({
    '.replybtn click'(e){
      const selector = e.target.parentElement.nextSibling;
      selector.css('display', selector.css('display') === 'none'? 'block' : 'none');
    }
  });
});

答案 1 :(得分:0)

这可能不是最佳解决方案,但似乎可以通过定义创建事件侦听器的函数然后设置2秒超时以使用 setTimeout()