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

求助:用jQuery实现单餐厅营业时间独立显隐(WordPress自动生成Div)

只切换当前对应餐厅的营业时间

嘿,这个问题其实挺常见的——当元素是批量生成没法单独加ID时,利用DOM元素的相对位置就能搞定,完全不用给每个div单独加标识。

你现在的代码问题在于,每次点击都选中了页面上所有的.oh-wrapper,所以才会全部展开/收起。我们要调整选择逻辑,从点击的那个链接出发,只定位到它所属餐厅的营业时间容器。

给你修改后的代码:

jQuery(document).ready(function($) {
  $('.oh-current-open').on('click', function(e) {
    // 先阻止链接的默认跳转行为,避免页面刷新打乱操作
    e.preventDefault();
    
    // 核心逻辑:从当前点击的元素出发,锁定它所在餐厅的营业时间容器
    // 这里假设每个餐厅的内容都包裹在类名为restaurant-item的父容器里
    // 如果你的实际DOM结构不同,把'.restaurant-item'换成对应父元素的选择器就行
    $(this).closest('.restaurant-item').find('.oh-wrapper').animate({ 'height': 'toggle' });
  });
});

为啥这么写能解决问题?

  • $(this)指向当前被点击的「营业时间」链接,确保我们只围绕触发事件的元素操作。
  • closest('.restaurant-item')会向上遍历DOM树,找到最近的包含这个链接的餐厅父容器——直接把操作范围限定在了当前餐厅内部。
  • 最后用find('.oh-wrapper')在这个父容器里精准定位对应的营业时间容器,这样就只会展开/收起当前餐厅的内容,不会影响其他餐厅。

如果你的DOM结构里,.oh-wrapper是.oh-current-open的直接兄弟(比如俩元素在同一个父节点下),还能用上更简洁的写法:

$(this).siblings('.oh-wrapper').animate({ 'height': 'toggle' });

这样不管WordPress生成多少个餐厅div,每个链接都只会控制自己对应的营业时间啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:03:51