Ol在没有进入if条件的情况下隐藏
ol is hiding without entering the if condition
我有这个ol
和li
s。在点击ol
时,我想要隐藏ol
,但如果点击li
,它不应该隐藏。当屏幕尺寸低于768px
时,应该会发生这种情况。下面是我的代码
jQuery('ol.main-nav').click(function () {
if (jQuery(window).width() <= 768) {
jQuery('ol.main-nav > li ').click(function (event) {
event.stopPropagation();
})
jQuery('ol.main-nav').hide(100);
}
})
实际上,我的代码隐藏了ol.nav-main
。当使用调试器时,它不进入if条件,但仍以某种方式执行这段代码。
试试:
jQuery('ol.main-nav').click(function () {
if (jQuery(window).width() <= 768) {
jQuery('ol.main-nav').hide(100);
}
});
jQuery('ol.main-nav > li ').click(function (event) {
if (jQuery(window).width() <= 768) {
event.stopPropagation();
}
})
你几乎不希望将一个事件处理程序连接到另一个事件处理程序中。
对于你所描述的内容,你有两个选择:
-
检查事件发生时是否通过
li
:jQuery('ol.main-nav').click(function(event) { var t; if (jQuery(window).width() <= 768) { for (t = event.target; t != this; t = t.parentNode) { if (t.tagName == "LI") { return; // The click came through an LI } } jQuery('ol.main-nav').hide(100); } });
或
-
为
li
s添加一个停止传播的处理程序。这就简单多了:jQuery('ol.main-nav').click(function () { if (jQuery(window).width() <= 768) { jQuery('ol.main-nav').hide(100); } }); jQuery('ol.main-nav > li').click(function(event) { event.stopPropagation(); // If you like check `width` here too });
做一个单一的点击事件,测试被点击的元素是否是一个列表项,或者被点击的元素是否是一个列表项的子元素:
jQuery('ol.main-nav').click(function (e) {
if (jQuery(window).width() <= 768 && jQuery(e.target).closest('ol.main-nav > li').length) {
e.preventDefault();
} else {
jQuery('ol.main-nav').hide(100);
}
});
演示:https://jsfiddle.net/Lm73y2bL/
相关文章:
- 如何在未直接触发的情况下停止事件
- 如果满足某些条件,如何在不调用模态的情况下首先调用类
- JavaScript while循环没有'不能在有条件的情况下工作
- 在谷歌应用程序脚本中,如何在满足条件的情况下只发送一次电子邮件
- 类型胁迫在有条件的情况下更危险吗?
- 按钮(禁用=错误)条件;在某些情况下有效,而在其他情况下无效
- 如何在不强制的情况下添加条件文本?[101,pdf格式]
- JavaScript - 是否可以在不使用OR的情况下在一个条件下检查多个工作日
- 如何在具有某些条件的情况下从列表中删除重复项,下划线.js
- 在 jsp 中,如何在有条件的情况下进行加载
- 在 if 条件不起作用的情况下使用 .hasClass()
- 默认情况下,在启动时执行条件AND中的一行
- Ol在没有进入if条件的情况下隐藏
- Javascript在span标签的情况下没有正确检查条件
- JS,JSON:如何在满足2个条件的情况下获得n个第一项
- 是否有可能在不使用服务器端代码的情况下有条件地向页面添加JavaScript文件?
- 为什么我的程序只是在没有条件的情况下才进入函数
- IE10:如何在没有条件注释的情况下为ActiveX分支JS
- Javascript-比较两个数组,然后在满足条件的情况下推送到新数组
- 如何在满足jquery中的条件的情况下包含js文件