使用Meteor-Blaze向class添加属性

时间:2014-06-30 20:14:46

标签: jquery meteor meteor-blaze

如何使用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');
  });
});

1 个答案:

答案 0 :(得分:2)

在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模板中查找而不是全部。因此,您可以在页面上使用<a class="external",但在其他模板中,并且不会添加标题属性。

您也可以在这里使用$