0

我使用LeafletJS创建了一个地图并添加了一个按钮,该按钮用作通过 jQuery 驱动的触发器。但是使用 .click() 事件侦听器不起作用。所以我查看了页面的来源并做了一些实验。

我发现几乎所有通过JavaScript生成的代码对jQuery来说都是不可见的。我几乎无法使用地图的任何元素作为触发器或以任何方式影响它们(例如使用.css())。

我想知道两件事:

  • 为什么通过 JavaScript 生成的 HTML对 jQuery是不可见的?它是库(LeafletJS)特定的吗
  • 有没有办法使用 jQuery 访问通过 JavaScript 库生成的 HTML 而无需修改它自己的库?
4

3 回答 3

2

您无法使用 jQuery 触摸其中的任何内容的原因是 LeafletJS 中的代码是异步运行的。当您运行 jQuery 代码时,尚未创建相关元素。

您必须在whenReady回调中运行您的 jQuery 代码。


如果你只是想听点击事件,你可以使用事件委托:

$(document).on('click', 'The CSS selector', function () {
    // Your code here...
});

这会起作用,但出于性能原因,您应该将事件侦听器绑定到您正在调用 LeafletJS 的元素。

于 2013-01-27T17:48:20.157 回答
0

.live(事件,处理程序(事件对象))

不推荐使用的版本:1.7,已删除:1.9

使用“.on()”更正确。

于 2013-01-27T18:05:53.207 回答
0

要在 JS 生成的 html 中正确使用 click() 函数,您需要使用 live() 函数http://api.jquery.com/live/

$('.element').live('click', function(){
  // your code here
});
于 2013-01-27T17:52:45.700 回答