【问题标题】:Add attribute to class using Meteor-Blaze使用 Meteor-Blaze 向类添加属性
【发布时间】:2014-07-01 04:26:37
【问题描述】:

如何使用 Meteor + Blaze 执行以下操作和/或为什么这不起作用?

代码做/不做下面所说的

// client...

$(document).ready(function () {
  console.log("this logs...");
  $('a.external').each(function () {
    console.log("this doesn't log");
    $(this).attr('title', 'External Link');
  });
});

【问题讨论】:

    标签: jquery meteor meteor-blaze


    【解决方案1】:

    在 Meteor 中,您需要小心地在绘制 DOM 后对其进行操作。上面的代码会在所有脚本下载完成后触发,但是 DOM 还没有被绘制出来。

    幸运的是,这非常简单!

    如果你的模板是这样的

    <template name="hello">
        <a href="https://servicelocale.com/" class="external">Link</a>
    </template>
    

    然后就可以使用渲染的回调了:

    Template.hello.rendered = function() {
        this.$('a.external').each(function () {
            $(this).attr('title', 'External Link');
        });
    }
    

    我还在渲染回调中使用了this.$ 而不是$。这很有用,因为它只查看hello 模板而不是全部。因此,您可以在页面上添加 &lt;a class="external",但使用不同的模板,并且不会添加标题属性。

    您也可以在此处使用$

    【讨论】:

    • 好的,我相信我们已经在没有this.$ 的情况下尝试过这个,但会再试一次......
    • 很酷,所以这适用于模板除了布局,这意味着我们必须为需要它的各种模板编写多个函数。如果其他人对为什么这不适用于布局模板有任何想法,请告诉我!
    • @JohnAllen 布局模板通过UI.body 调用,因此您可以按照此处的文档页面使用UI.body.rendered (docs.meteor.com/#ui_body)
    猜你喜欢
    • 2014-08-10
    • 2010-11-10
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    相关资源
    最近更新 更多