我有这个jQuery代码
if (Meteor.isClient){
jQuery(document).ready(function(){
jQuery('#content .row > div').mouseenter( function(){
jQuery('#content .row div .edit').toggle();
});
jQuery('#content .row > div').mouseleave( function(){
jQuery('#content .row div .edit').toggle();
});
});
}
当我运行我的应用程序时,这不起作用。如果我将它放入Chrome控制台,它可以很好地工作。有什么问题?
之前也发生了不同的代码。
答案 0 :(得分:4)
您的代码将回调添加到执行代码时存在的DOM元素。但是,Meteor将在以后渲染模板时向页面添加内容。这是应该如何做的:
选项1)使用Meteor事件
Template.asdf.events({
'click .classname': function(e) {
...
}
});
选项2)在极少数情况下,你需要一些以前面的方式不起作用的东西,把JQuery的东西放在rendered
回调中:
Template.asdf.rendered = function(){
_.each(this.findAll('.classname'), function(element){
$(element).on('mouseenter', function(){...});
});
};
选项3)在极少数情况下,当您需要对所有页面进行特殊处理时,请使用JQuery实时绑定
Meteor.startup(function(){
$('#content .row > div').on('click', function(){...});
});
答案 1 :(得分:1)
您可以使用流星事件。
例如使用Meteor.startup(function(){而不是jQuery(document).ready(function(){
您必须查看http://docs.meteor.com/#eventmaps
可能很容易:)