Jquery 未触发“调整大小”时单击事件

Jquery 未触发“调整大小”时单击事件,jquery,Jquery,我在调整窗口大小时遇到了一些与某个单击事件有关的问题 下面是总结: 当屏幕小于某个值时,具有子ul元素的li项将接收一个类,单击该li项将向其自身添加一个类; 相同的条件将应用于init,只是为了检查我们是否在该屏幕值中 问题是: 在init上,当条件不满足时,单击不应该做任何事情;但是在resize上,当该条件满足时,它应该运行,这是我的问题:当该条件满足时,它不会在resize上运行 反之亦然:当满足条件时,会发生调整大小的操作,并且不再满足该条件,单击将不起作用; 我已经做了一个例子来说明

我在调整窗口大小时遇到了一些与某个单击事件有关的问题

下面是总结:

当屏幕小于某个值时,具有子ul元素的li项将接收一个类,单击该li项将向其自身添加一个类; 相同的条件将应用于init,只是为了检查我们是否在该屏幕值中 问题是:

在init上,当条件不满足时,单击不应该做任何事情;但是在resize上,当该条件满足时,它应该运行,这是我的问题:当该条件满足时,它不会在resize上运行 反之亦然:当满足条件时,会发生调整大小的操作,并且不再满足该条件,单击将不起作用; 我已经做了一个例子来说明我的问题;只需向上/向下缩小“结果”窗口即可检查条件

任何想法或建议都非常受欢迎, 谢谢

加价:

<nav class='navigation-wrap'>
    <ul>
        <li>
            <a href='#'>Link</a>
        </li>
        <li>
            <a href='#'>Link with childs</a>
            <ul>
                <li>
                    <a href='#'>Link</a>
                </li>
                 <li>
                    <a href='#'>Link</a>
                </li>
           </ul>
        </li>
    </ul>
</nav>
你需要:

事件委派允许我们将单个事件侦听器附加到父元素,该事件侦听器将为与选择器匹配的所有子体触发,无论这些子体现在存在还是将来添加

在动态添加class mobile nav时,需要使用。您必须使用委托事件方法

委派事件的优点是,它们可以处理来自子元素的事件,这些子元素将在以后添加到文档中。通过选择一个在附加委托事件处理程序时保证存在的元素

代码


抱歉,但我必须问-添加类的目的只是为了改变导航的样式,还是您更改颜色的示例只是为了演示?因为提供的示例可以使用css完成,只需使用媒体查询即可


在屏幕很小的情况下,您需要它们来针对javascript中的一些新行为,然后正如其他人所说的,使用事件委托将解决这个问题。

可能是一个误解-但是为什么您会说“在init上,当条件不满足时”?我不能在一个小窗口里打开这一页吗?这真的应该取决于调整大小事件还是取决于窗口的大小?好吧,当页面加载并且满足该条件时,会发生单击,否则不应该执行任何操作。当你调整windowIm的大小时也是如此,一个js新手:是的,它可以用mq来完成,但这只是一个例子,在真实的画面中,事情发生了不同,但这是我的问题:该死的事件委派;阅读关于它的atm:是的,这就是我一直在寻找的。Thnx!
if ( $(window).width()<800 ){
    $('.navigation-wrap li:has(ul)').addClass('mobile-nav');
        }else{
    $('.navigation-wrap li:has(ul)').removeClass('mobile-nav');
};

$( window ).resize(function() {
    if ( $(window).width()<800 ){
        $('.navigation-wrap li:has(ul)').addClass('mobile-nav');
    }else{
        $('.navigation-wrap li:has(ul)').removeClass('mobile-nav');
    };
 });

$('li.mobile-nav > a').click(function(e) {
    $(this).parent().toggleClass('mobile-nav-is-triggered');
    return false;
});
.mobile-nav{
    background: red;
}
.mobile-nav-is-triggered{
    background: green;
}
$(document).on('click','li.mobile-nav > a',function(e) {
  $(this).parent().toggleClass('mobile-nav-is-triggered');
  return false;
});
$('.navigation-wrap').on('click', 'li.mobile-nav > a', function(e) {
    $(this).parent().toggleClass('mobile-nav-is-triggered');
    return false;
});