fgy*_*ica 8 jquery events ctrl selection propagation
我目前正在开发一个依赖于地图(通过Leaflet.js的OpenStreetMap数据)和地图上显示的标记的应用程序.
我为用户实现了选择,因此他可以单击标记来选择它们,然后按住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...
}
}
});
Run Code Online (Sandbox Code Playgroud)
就触发同时按Ctrl和A键按键而言,这是有效的,选择按照我的意愿完成.
我的问题: 即使我添加了一行来阻止事件的传播,浏览器(在Chrome和Opera上测试)仍然执行常规的Ctrl + A-Selection,即我的标记在地图上通过我的自定义选择实现选择,整个网页被选中.这很烦人:在地图旁边没有可以选择的页面上的文字,所以没有意义 - 我希望CtrlA在我的地图显示时禁用.
PS我尝试使用如何在浏览器中使用jquery禁用Ctrl + A(全选)中显示的代码?但是无法让它发挥作用.这个功能真的在API中吗?
Vik*_* S. 11
假设你的错误是你正在使用e.stopPropagation()
它只是停止事件的进一步起泡(因为你的事件被附加到文档 - 它是无用的).尝试e.preventDefault()
改为:
jQuery(document).keydown(function(e) {
if (e.ctrlKey) {
if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a'
e.preventDefault();
// SELECT ALL MARKERS HERE...
}
}
});
Run Code Online (Sandbox Code Playgroud)
这个演示对我来说很好
归档时间: |
|
查看次数: |
4299 次 |
最近记录: |