我正在做一个流星应用程序。我有一些动态信息框,将根据数据库详细信息显示在谷歌地图中。当它内部的数据发生变化时,我试图给信息框自定义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.
}
};
感谢。
答案 0 :(得分:0)
据我所知,jQuery对象似乎没有名为'effect'的方法......
答案 1 :(得分:0)
从它的外观来看,你想要突出显示由变量div
引用的刚刚创建的elem
元素,所以试试
$(elem ).effect('highlight', {color: 'red'}, 1000);
还要确保在调用effect
之前将元素添加到dom中。
更新:根据更新的代码
elem
未添加到dom树中,您可能需要将其附加到正文$('body').append(elem)
elemID
,导致创建具有相同ID的多个元素 - 这是无效的$("#elemID")
错误,因为它查找标识为elemID
的元素,其中elemID
是包含实际ID的变量,因此它应为$("#" + elemID)
< / LI>
醇>