如何实现仅点击.expander按钮时触发.logos-wrapper显隐切换
问题根源
你当前的代码给整个.ventures-minorities容器绑定了点击切换内容的事件,因此点击容器内任意位置(包括按钮外的空白区域)都会触发内容显隐;同时按钮文本切换、内容显隐是两个独立绑定的事件,二者没有关联,自然会出现状态不同步的问题。
修复步骤
- 删除原有绑定在
.ventures-minorities容器上的点击事件,从根源上避免点击空白区域触发内容切换 - 将按钮文本切换、内容区显隐的逻辑合并,统一绑定到
.expander按钮的点击回调中,保证两个操作永远同步执行 - 点击按钮时通过DOM向上查找所属的父容器,再找到容器内对应的内容区操作,兼容页面上存在多个相同模块的场景
- 将事件绑定目标从按钮内的
.elementor-button-textspan改为按钮本身,避免点击按钮内边距等非文本区域时触发失效
修正后完整JS代码
(function($) { $(document).ready(function() { $('.expander').on('click', function() { const $btnText = $(this).find('.elementor-button-text'); const $parentContainer = $(this).closest('.ventures-minorities'); const $contentWrapper = $parentContainer.find('.logos-wrapper'); // 切换按钮文本 $btnText.text($.trim($btnText.text()) === 'Learn more' ? 'Close' : 'Learn more'); // 切换内容区显隐状态 $contentWrapper.toggleClass('sized'); }); }); })(jQuery);
原有CSS和HTML代码无需修改,替换上述JS代码后即可实现预期效果:仅点击按钮时才会同步切换内容显隐状态和按钮文本,点击容器其他空白区域不会触发任何交互。
内容的提问来源于stack exchange,提问作者aressen
相关产品推荐
相关产品推荐

