Meteor不运行jQuery

时间:2013-07-15 06:29:54

标签: javascript jquery meteor

我有这个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控制台,它可以很好地工作。有什么问题?

之前也发生了不同的代码。

2 个答案:

答案 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

可能很容易:)