gpt4 book ai didi

javascript - 为什么我的 click() 函数仅适用于调整大小?

转载 作者:行者123 更新时间:2023-12-01 01:21:05 25 4
gpt4 key购买 nike

我快疯了。正如您在下面的代码片段中看到的 - 一切正常。但在我的项目中却没有。在我的项目中,仅适用于 resize() 中的代码。当我调整窗口大小时 - 好吧,这很好,我可以通过单击项目添加和删除“打开”类。但是如果我刷新页面而不调整窗口大小 - 我无法添加类。什么也不能做。我花了几个小时在这件事上。有人可以帮助我吗?为什么不起作用?

(function ($) {
$('.nav-item').on('click', function() {
$(this).toggleClass('open');
$(this).siblings().removeClass('open');
});

$(window).resize(function() {
if($(window).width() < 1200) {
$('.nav-item').on('click', function() {
$(this).toggleClass('open');
$(this).siblings().removeClass('open');
});
}
});
})(jQuery);
.open {
color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<ul class="main-menu">
<li class="nav-item">
<span class="nav-link">Menu item 1</span>
</li>
<li class="nav-item">
<span class="nav-link">Menu item 2</span>
<ul class="dropdown-menu">
<li class="dropdown-item">
<span>Menu item 2 subitem 1</span>
</li>
<li class="dropdown-item">
<span>Menu item 2 subitem 2</span>
</li>
</ul>
</li>
<li class="nav-item">
<span class="nav-link">Menu item 3</span>
<ul class="dropdown-menu">
<li class="dropdown-item">
<span>Menu item 3 subitem 1</span>
</li>
<li class="dropdown-item">
<span>Menu item 3 subitem 2</span>
</li>
</ul>
</li>
</ul>

我使用 Drupal 8 CMS(如果它很重要的话 - 但我使用 jQuery、click() 和 Drupal 数百万次,而且总是没问题。

最佳答案

它在代码片段中起作用而不是在您的代码中起作用的原因是,SO 代码片段自动将 jQuery 逻辑放置在 document.ready 事件处理程序中,这确保 DOM 已在之前加载 代码运行。

但是您的代码正在 IIFE 中运行,而不是 document.ready 事件处理程序,因此您尝试将事件绑定(bind)到尚不存在的元素。直到 resize 事件发生时,该事件才被绑定(bind)并开始工作。

要解决此问题,请将 IIFE 替换为 document.ready 处理程序:

jQuery(function($) {
$('.nav-item').on('click', function() {
$(this).toggleClass('open').siblings().removeClass('open');
});
})
.open {
color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<ul class="main-menu">
<li class="nav-item">
<span class="nav-link">Menu item 1</span>
</li>
<li class="nav-item">
<span class="nav-link">Menu item 2</span>
<ul class="dropdown-menu">
<li class="dropdown-item">
<span>Menu item 2 subitem 1</span>
</li>
<li class="dropdown-item">
<span>Menu item 2 subitem 2</span>
</li>
</ul>
</li>
<li class="nav-item">
<span class="nav-link">Menu item 3</span>
<ul class="dropdown-menu">
<li class="dropdown-item">
<span>Menu item 3 subitem 1</span>
</li>
<li class="dropdown-item">
<span>Menu item 3 subitem 2</span>
</li>
</ul>
</li>
</ul>

关于javascript - 为什么我的 click() 函数仅适用于调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61018556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com