无法将Google Maps DOM侦听器添加到使用jQuery创建的元素

时间:2010-07-11 07:08:08

标签: jquery events dom google-maps-api-3

我有以下创建div的脚本,添加了Google Maps DOM侦听器,并使用JavaScript的内置DOM操作方法将其附加到另一个div到另一个div:

var div = document.createElement('div');
var html = '<b>' + string_of_text + '</b>';
div.innerHTML = html;
google.maps.event.addDomListener(div, 'click', function() {
    google.maps.event.trigger(marker, 'click');
});
document.getElementById('sidebar').appendChild(div);

到目前为止,这么好。加载页面时,单击div将触发标记的单击事件。

但是,当我尝试使用以下jQuery代码完成相同的操作时,会附加div并且所有内容都会加载,但是单击div时不会触发任何单击的事件:

var div = $("<div><b>"+string_of_text+"</b></div>");
google.maps.event.addDomListener(div, 'click', function() {
    google.maps.event.trigger(marker, 'click');
});
$("#sidebar").append(div);

有没有办法使用jQuery创建DOM元素并为其提供Google Maps DOM侦听器?

1 个答案:

答案 0 :(得分:1)

你需要

google.maps.event.addDomListener(div[0], 'click', ...  // or div.get(0)

为了传递元素,而不是jQuery对象。 (参见jQuery get

你也可能想要:

$("#sidebar").append(div);

而不是

$("#sidebar").append(sidebarEntry);

我不知道sidebarEntry来自哪里。