使用 Javascript 单击 ESC 时隐藏菜单
Hide menu when ESC clicked using Javascript
我目前正在自定义屏幕外导航菜单。
我想使用 Javascript 在单击 ESC 或用户单击菜单焦点之外时关闭菜单。我如何实现这一点?
这是我的例子:http://jsfiddle.net/q55xtcw4/
我尝试使用此代码:
$( document ).on( 'click', function ( e ) {
if ( $( e.target ).closest( elem ).length === 0 ) {
$( elem ).hide();
}
});
$( document ).on( 'keydown', function ( e ) {
if ( e.keyCode === 27 ) { // ESC
$( elem ).hide();
}
});
但没有成功。
非常感谢此处的任何指导。
肮脏但有用的解决方案,您可以将JS代码更改为此
$(".nav-trigger").click(function(e){e.stopPropagation()})
$( document ).on( 'click', function ( e ) {
$( ".nav-trigger" ).prop("checked",false);
});
$( document ).on( 'keydown', function ( e ) {
if ( e.keyCode === 27 ) { // ESC
$( ".nav-trigger" ).prop("checked",false);
}
});
这是工作小提琴
这是更新的小提琴
这是一个工作的 JSFiddle: http://jsfiddle.net/e9wa0093/2/
基本上,您的示例中未定义elem
。与show()
和hide()
方法相同。我对代码所做的更改仅更新用于控制菜单位置(即可见性)的隐藏复选框的 checked
属性。
编辑:
更正了 JSFiddle,如下所述: http://jsfiddle.net/e9wa0093/4/
使用这个:-
$(document).keyup(function(e) {
if (e.keyCode == 13) $('.save').click(); // enter
if (e.keyCode == 27) $('.cancel').click(); // esc
});
欲了解更多信息,请单击此处
elem 不是你的 DOM 上的东西
$( elem ).hide();
您应该将其更改为您的类或 ID,例如:
$('#menu').hide();
尝试使用这样的东西:
<script>
$(document).ready(function(){
$(document).keypress(function (evt) {
//Determine where our character code is coming from within the event
var charCode = evt.charCode || evt.keyCode;
if (charCode == 27) { //Enter key's keycode
//do what ever you want
$('#someid').hide();
}
});
});
</script>
您正在使用的解决方案基于使用隐藏复选框的 CSS hack。
您可以通过切换此复选框的值来控制菜单的状态,而不是使用 javascript 隐藏菜单。 使用 javascript 隐藏菜单实际上会破坏 CSS hack,因为 CSS 取决于菜单是否可见,但只是从屏幕一侧偏移。
所以替换:
$( elem ).hide();
跟:
$("#nav-trigger").click();
下面的代码将在按 Esc 时折叠菜单
$(document).keyup(function(e) {
if (e.keyCode == 27) { $("#nav-trigger").removeAttr("checked") }
});
相关文章:
- 向下滚动时隐藏菜单,向上滚动时显示,适用于Chrome,不适用于Safari(手机)
- 如何使用jQuery显示/隐藏菜单
- 如何在IE中隐藏菜单栏,工具栏
- 使用 Javascript 单击 ESC 时隐藏菜单
- 使用 jQuery 显示和隐藏菜单
- 使用 jQuery 显示/隐藏菜单
- 在鼠标悬停时显示/隐藏菜单
- 移动隐藏菜单适用于jsfiddle,但不适用于在线.任何解决方案都会有所帮助
- 如何隐藏菜单?(不是“切换”)
- 基于滚动的Jquery显示/隐藏菜单
- 如何在单击项目时隐藏菜单,或在有人单击离开时隐藏菜单
- 根据用户登录隐藏菜单,在角度JS中注销
- 在页面加载时隐藏菜单,需要在单击超链接时填充
- 使用 jQuery 隐藏菜单
- 如何使用隐藏菜单项直到单击的 javascript 显示第一个菜单项内容
- 切换隐藏菜单按钮的显示/隐藏(响应式)
- 如果未在查询中单击元素,则隐藏菜单
- 隐藏菜单元素不起作用
- 使用 jquery 隐藏菜单在 IE 中不起作用
- Javascript在滚动时显示/隐藏菜单