You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

URL锚点触发FAQ展开:Drupal中jQuery实现方案咨询

Drupal FAQ锚点访问自动展开对应答案的解决方法

直接用$(hash).show()无效的原因是你原来的点击交互不止修改display属性,还涉及过渡效果类和data-slide-toggle属性的设置,单纯调用show()只会改变display,不会同步其他状态。

推荐两种解决思路:

1. 复用原有点击逻辑(更稳妥)

直接触发对应问题元素的click事件,让原有交互代码自动处理所有样式和属性:

$(document).ready(function() {
  const hash = window.location.hash;
  // 确认hash对应存在的答案元素
  if (hash && $(hash).length) {
    // 找到关联的问题元素(根据你的DOM结构调整选择器,比如答案的父容器内的问题按钮)
    const $question = $(hash).closest('.faq-item').find('.faq-question');
    // 触发点击事件
    $question.trigger('click');
  }
});

2. 手动同步所有状态(适合无法复用点击逻辑的场景)

如果必须手动设置,要完全对齐点击时的DOM状态,包括display、过渡类、data属性:

$(document).ready(function() {
  const hash = window.location.hash;
  if (hash && $(hash).length) {
    const $answer = $(hash);
    // 替换成你实际使用的过渡类名和data属性值
    $answer.css('display', 'block')
           .addClass('faq-transition-active') // 假设过渡效果靠这个类实现
           .attr('data-slide-toggle', 'open'); // 对齐点击后的属性值
    
    // 同步问题元素的状态(比如高亮、箭头切换)
    const $question = $answer.prev('.faq-question');
    $question.addClass('active');
  }
});

注意:两种方案都需要确保页面DOM完全加载后执行代码,另外要根据你的实际DOM结构调整选择器,比如.faq-item、.faq-question这些类名要和页面里的一致。

内容的提问来源于stack exchange,提问作者Tan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:05:00