0

我在正确配置关闭动态添加评级到 jquery ui 地图的信息窗口时遇到问题。

首先,我尝试在 $.each 的 getJson 中像这样随时随地进行操作:

$(labelka).raty({ readOnly: true,  score: marker.friendly_rate});

其中 labelka 之前设置为:var labelka = "#spot"+marker.id 其中 marker.id 是来自 getJson 的行中的 id 值,friendly_rate 是适当的数值。

结果:没有成功:

第二次尝试:我想,在你提到某些东西之前,它必须存在。所以等到 jqxhr=getJson 完成。所以在 getJson() 我只附加到 gloably 可见的字典 key:values 如下:

pair_mark[labelka]=marker.friendly_rate

然后在 `jqxhr.complete(function() {} 我试着做

jqxhr.complete(function() {

for (var key in pair_mark){
    $("#map_canvas").find(key).raty({ readOnly: true,  half  : true, score: pair_mark[key] });
}
  console.log( "second complete" );
});`

也:没有成功

即使在尝试:

$(key).raty({ readOnly: true,  half  : true, score: pair_mark[key] })

Google Chrom 控制台的屏幕截图(更大的分辨率)在此处输入图像描述

并链接到源代码: https ://gist.github.com/andilab/2efe76bb1ffbeeaa26ee

4

1 回答 1

1

有2个问题:

 var labelka = "#spot"+marker.id
 var html_part ="<div id=\""+labelka+"\"></div>";

这将创建以下标记:

<div id="#spotSomeMarkerId"></div>

这个节点在 jQuery 中可能无法通过使用 来选择$('#spotSomeMarkerId');,因为在 .id 的 id-attribute 中必须省略 # <div/>

基本问题:InfoWindow 的内容以字符串形式提供,该内容的 DOM 将在 InfoWindow 的 domready-event 触发时可用,而不是之前。在此之前,您不能调用$.raty()特定的 InfoWindow。

可能的解决方案:

  • 如前所述,等到 domready-event 触发
  • 使用 DOM-Node 作为 InfoWindow 的内容,在这种情况下,您可以在创建 DOM-Node 后立即调用 raty(无论该节点是否已被注入到文档中/InfoWindow 是否打开)

第二种方法的代码(用它代替你的要点的第 121-123 行):

var contencik = $('<div><h4>'+marker.name+'</h4><br>'
                    + marker.address_street
                    + ' '+marker.address_number
                    + '<br>Rating:</div>')
                  //the content is ready, it's a query-object
                  //now we append-the raty-container and call raty immediately
                  //for this container
                  .append($('<div id="spot'+marker.id+'"></div>')
                            .raty({ readOnly: true, score: marker.friendly_rate}))
                  //the content is still a jQuery-object
                  //we need a DOM-node to pass it to the 
                  //content-property of the InfoWindow
                  [0];
于 2014-02-02T12:56:12.783 回答