【发布时间】:2013-09-25 12:49:56
【问题描述】:
我正在做一个流星应用程序。我有一些动态信息框,它们将根据数据库详细信息显示在谷歌地图中。当其中的数据发生变化时,我试图为信息框自定义 div 提供一些 jquery 效果。问题是 jquery 效果功能不起作用,因为似乎 div 元素的创建还没有完全完成,无法正常工作。我尝试使用 setTimeout 和 Meteor.defer,但它仍然无法正常工作。如何克服这种情况?
Template.myTemplate.rendered = function() {
//some code
if (!rendered) {
//map rendering code
this.rendered = true;
}
for (var i = 0; i < count; i++) {
//some code
var elem = document.createElement("div"); //custom div to be used in infobox
elem.id = i+'_div'; // id is dynamic
elem.innerHTML = '<div><b>' +some_data +'</div>';
var elemInfoBoxOptions = {
content: elem,
disableAutoPan: false,
maxWidth: 0,
pixelOffset: new google.maps.Size(-20, 0),
zIndex: null, boxStyle: {opacity: 1, width: "100px"},
infoBoxClearance: new google.maps.Size(1, 1),
visible: true,
pane: "floatPane",
enableEventPropagation: false,
closeBoxURL: ''
};
var elemInfobox = new InfoBox(elemInfoBoxOptions);
elemInfobox.setPosition(new google.maps.LatLng(latitude, longitude));
elemInfobox.open(map);
$("#"+i+"_div").effect('highlight', {color: 'red'}, 1000); //Tried putting this code inside setTimeout and Meteor.defer. Did not work.
}
};
谢谢。
【问题讨论】:
-
这是id为
elemID的元素 -
elemID元素在哪里以及它是如何创建的? -
结果看起来像是可以用css和会话变量组合来完成的。看看选择的玩家是如何在流星leaderboard example中突出显示的。
-
为什么要使用 jQuery 来生成 DOM 元素而不是 Meteor 模板?尝试在 Meteor 中使用 jQuery 就像尝试在 Kiva 仓库中手动移动盒子一样。如果您需要以特别的方式创建 DOM 元素,您应该查看 Meteor.render 的魔力。另外,jQuery 不能选择不在页面上的元素。
标签: javascript meteor