0

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');
  });
});
4

1 に答える 1

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"が、別のテンプレートに含めると、タイトル属性が追加されません。

$ここでも代わりに使用できます。

于 2014-06-30T20:26:37.360 に答える