我正在尝试运行一个显示和隐藏表单的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代码可能没有运行的任何想法?
答案 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()