The simple answer is that you can’t. In a reactive context. new data can come along at any time and (potentially) completely change the dom.
However, there are some strategies you can adopt: In Blaze, the most important in my opinion, is to make good use of templates. A template’s onRendered will be fired as soon as all non-reactive elements have been rendered. That means using (sub)templates liberally and ensuring that jQuery plugins (for example) are only instantiated on simple templates, in which the content can be reliably determined to be ready (using subscription readiness, for example).
For example, if we have this template:
<template name="list">
{{#if Template.subscriptionsReady}}
{{#each listItems}}
<div>Name: {{name}}</div>
{{/each}}
{{/if}}
</template>
The Template.list.onRendered will fire long before the data has appeared. Changing it to two templates:
<template name="list">
{{#if Template.subscriptionsReady}}
{{> showList}}
{{/if}}
</template>
<template name="showList">
{{#each listItems}}
<div>Name: {{name}}</div>
{{/each}}
</template>
Means that when the Template.showList.onRendered fires, it will have data and be ready for a jQuery plugin to see it.