如何使用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');
});
});
答案 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"
,但在其他模板中,并且不会添加标题属性。
您也可以在这里使用$
。