我试过preventDefault()
,但我没有成功。有什么东西我不见了吗?
如果可能的话,我会尝试全局禁用它(比如在window
上注册事件)
答案 0 :(得分:11)
似乎没有办法阻止事件触发。唯一的替代方法似乎是在您不希望它们工作时暂时删除accesskey属性。这就是jQuery UI has to do for modal dialogs。
以下是该主题的代码:
$("#boxA-dialog").dialog({
autoOpen: false,
modal: true,
height: 400,
width: 300,
open: function(event, ui) {
ak = $('[accesskey]').each(function() {
$(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey')
})
},
close: function(event, ui) {
ak.each(function() {
$(this).attr('accesskey', $(this).data('ak'))
})
}
});
正如您所看到的那样,在删除jQuery数据之前将其保存为jQuery数据:
$(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey')
然后从数据中恢复它们:
$(this).attr('accesskey', $(this).data('ak'))
我对实际阻止事件的解决方案感兴趣,而不是使用此解决方法。
答案 1 :(得分:0)
如果我能正确理解你的问题,你可以尝试一下。
$('[accesskey*=]').focus(function(e) {
// disable accesskey functionality
});
$('[accesskey*=]').blur(function(e) {
// reenable accesskey functionality
});
答案 2 :(得分:0)
使用上一个答案,您可以使用此技巧来删除"所有" accesskey"页面中的选项。
$('[accesskey*=]').attr('accesskey','');
只需在页面上设置所有访问密钥即可。