我正在使用jQuery的一些帮助构建画布外导航。导航本身通过复选框.menu input[type=checkbox]:checked ~ ul触发。在复选框的更改事件中,我切换了类,效果很好。但是现在我想在单击导航项时也触发这些更改,以使导航在单击时自动折叠。到目前为止,一切正常,但是当我在导航单击上触发change()时,仍会应用.menu input[type=checkbox]:checked ~ ul,而不是默认样式。您知道为什么会这样吗?$('#NavButton').change()函数中的toggleClasses在导航链接单击时执行,而css对此做出反应,只是.menu input[type=checkbox]:checked ~ ul仍被应用。由于已触发toggleClasses,因此我假设复选框状态已更改(不幸的是,我无法在FireBug中看到复选框状态,如果有人知道如何执行此操作,请告诉我!),这就是为什么我很困惑为什么仍适用。这是代码CSS:.menu > ul { visibility: visible; opacity: 1; display: none; width: 0; height: 100%; text-align: left; position: fixed; top: 0; border-color: #111111; @include box-shadow (none); background-image: none; background: #3B3B3B; overflow-y: auto; transition: width 0.3s ease;}.menu input[type=checkbox]:checked ~ ul { width: 20%; display: block; margin-left: -20%;}.wrapper.open { left: 20%; overflow: hidden; position: relative;}body.open { overflow: hidden;}jQuery的:$('#NavButton').change(function() { $('.wrapper').toggleClass('open'); $('body').toggleClass('open'); $('#PrimNav a').toggleClass('open'); });$('#PrimNav').on('click', '.open', function() { console.log('change'); //<- Is working! $('#NavButton').change(); //<- Is working!});HTML:<nav class="menu" aria-labelledby="mainnav-desc" role="navigation"> <input id="NavButton" type="checkbox"> <label for="NavButton">Menu</label> <ul id="PrimNav" class="nav"> <li><a href="#">Example Link</a></li> <li><a href="#">Example Link</a></li> <li><a href="#">Example Link</a></li> </ul></nav>谢谢! (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 $('#NavButton').change()不会取消选中该框。您应该明确地这样做:$('#NavButton').prop('checked',false);http://jsfiddle.net/mblase75/kxSqW/ (adsbygoogle = window.adsbygoogle || []).push({}); 09-25 18:03