【发布时间】:2012-11-13 18:20:17
【问题描述】:
我目前正在开发一个依赖于地图(通过 Leaflet.js 提供 OpenStreetMap 数据)和地图上显示的标记的应用程序。
我为用户实现了 selection,因此他可以单击标记来选择它们,然后按住 Ctrl 键单击以将标记添加到选择中。这很好用。
现在我希望用户能够通过点击 CtrlA 来选择地图上当前的所有标记。我用来实现这一点的代码如下所示:
jQuery(document).keydown(function(e) {
if (e.ctrlKey) {
if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a'
e.stopPropagation();
// SELECT ALL MARKERS HERE...
}
}
});
就同时按下 Ctrl 和 A 键而言,这有效,选择是如我所愿。
我的问题: 即使我添加了停止传播事件的行,浏览器(在 Chrome 和 Opera 上测试)仍然执行通常的 Ctrl+A-Selection,即除了我的标记被我的自定义选择选中在地图上实现,整个网页被选中。这很烦人:在地图旁边没有可以选择的页面上的文本,所以真的没有意义 - 我想禁用 CtrlA 而我的地图显示出来了。
附注 我尝试使用How can I disable Ctrl+A (select all) using jquery in a browser? 中显示的代码,但无法让它工作。 API 中真的有这个功能吗?
【问题讨论】:
标签: jquery events selection propagation ctrl