【发布时间】:2020-04-03 18:47:30
【问题描述】:
我快疯了。正如您在下面的代码 sn-p 中看到的 - 一切正常。但不在我的项目中。在我的项目中,仅适用于 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 数百万次,它总是很好。
【问题讨论】:
-
您是否在项目中动态添加
.nav-items元素? -
顺便说一句,在另一个事件处理程序中添加事件处理程序通常是个坏主意。每次调整窗口大小时,您都会添加额外的点击处理程序。
-
@Barmar “动态”是什么意思?站点在 Drupal CMS 上,代码是一个菜单,但我对其进行了简化(剪切链接)。我可以在管理面板中添加项目,生成代码,它不是严格的 HTML 代码。
-
我的意思是在页面加载后添加它们,例如使用 AJAX。
-
@Barmar,所以不,我不会动态添加
.nav-items。
标签: javascript jquery html drupal onclick