Divi中点击blurb模块触发accordion/toggle展开的代码问题
问题根因
- 选择器语法错误:你给blurb模块设置的
#open-urbanplanningcurriculum就是该模块本身的ID,你写的$('#open-urbanplanningcurriculum .et_pb_blurb_0.et_pb_blurb')中间带空格,语义是「查找ID为open-urbanplanningcurriculum的元素内部符合类条件的子元素」,自然匹配不到任何元素,事件绑定失效。 - 缺少默认行为拦截:blurb模块如果设置了跳转链接/自带默认点击逻辑,会优先执行默认行为,导致触发toggle的逻辑被中断。
修正后的完整代码
<script> jQuery(function ($) { // 直接绑定blurb元素本身的点击事件 $('#open-urbanplanningcurriculum').on('click', function(event){ // 拦截blurb的默认点击行为 event.preventDefault(); event.stopPropagation(); // 触发toggle展开 $('#urbanplanningcurriculum .et_pb_toggle_1 .et_pb_toggle_title').click(); // 如果需要滚动到toggle位置可以取消注释下面这句 // $('html, body').animate({scrollTop: $('#urbanplanningcurriculum').offset().top - 100}, 300); }); }); </script>
如果需要保留类名校验避免ID重复问题,可以把触发器选择器改成$('#open-urbanplanningcurriculum.et_pb_blurb_0.et_pb_blurb'),去掉ID和类之间的空格即可。
排查调试方案
如果修改后仍然不生效,可以按下面的步骤排查:
- 打开浏览器控制台,输入
console.log($('#open-urbanplanningcurriculum').length),如果返回0说明ID拼写错误、大小写不匹配或者元素尚未加载完成。 - 输入
console.log($('#urbanplanningcurriculum .et_pb_toggle_1 .et_pb_toggle_title').length),如果返回0说明toggle模块的选择器配置错误。 - 检查blurb模块是否设置了
#之类的空链接,如果有可以去掉,避免跳转逻辑干扰。
内容的提问来源于stack exchange,提问作者lukasemory
相关产品推荐
相关产品推荐

