【问题标题】:Using Jquery in Meteorjs在 Meteorjs 中使用 Jquery
【发布时间】:2015-07-12 19:15:20
【问题描述】:

我刚开始使用流星,所以我想在 jquery 中使用 append 函数,但它不附加任何东西

JS:

if (Meteor.isClient) {      
Meteor.startup(function() {
        $( "span" ).append('Hello');
      });

我没有收到任何错误,也没有任何事情发生或追加。

HTML:

<span>lorem ipsum</span>
<p>stackoverflow</p>

我认为问题在于$('span').append('Hello'); 它在 html 代码之前加载??

【问题讨论】:

    标签: jquery meteor


    【解决方案1】:

    是的,Meteor 需要使用其渲染器自己的钩子来“准备 DOM”。如果你使用 Blaze(目前为止 Meteor 的默认渲染器),你可以使用 Template.templateName.onRendered() 函数:

    Template.templateName.onRendered(function () {
      $( "span" ).append('Hello');
    });
    

    这会将“Hello”附加到模板templateName 可能包含的任何跨度。

    请注意,正如我之前所暗示的,这将取决于您为应用选择的渲染器:Blaze、Angular 或 React。 (或与此相关的任何其他内容)但默认的是 Blaze,所以如果您不知道您使用的是哪一个,它可能是 Blaze。

    【讨论】:

    • 您好,您的解决方案可以正常工作,但是 somtimes 当我重新启动服务器时它没有附加任何内容??你知道为什么吗?
    • 那么,您将 jquery 命令分配给了哪个模板?这个模板是否总是包含第一手的跨度?如:它清楚地写在模板的html代码中,而不是在诸如{{#each}}?之类的句柄语句之间
    • 好吧,我使用的是铁路由器,所以我有一个布局模板({{&gt; yield}})和另一个foo 和它存在的跨度元素foo 模板所以我把Template.layout.onRendered... .(我做了 Template.foo.onRendered 但它根本不正常)
    • 是的,在 foo 模板中有一个 {{#each}}
    • 那么如果span在each中,尝试为里面创建另一个模板并在这个新的子模板上使用onRendered(见this answer
    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 2013-01-18
    • 2016-10-04
    • 2013-10-04
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多