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

jQuery点击show more按钮如何动态展示分类下全部隐藏div并关闭其他分类展开项

问题排查与解决方案

问题根因

同一分类下所有超出初始展示数量的文章div使用了相同的id属性,HTML规范要求id全局唯一,因此jQuery ID选择器仅能匹配到第一个符合条件的元素,导致点击按钮后仅显示1篇文章。

修改方案

1. 修复PHP端DOM输出逻辑

替换两处重复ID的输出代码:

  • 分类父容器重复ID修改:
// 原代码
echo '<div id="parentId">';
// 替换为
echo "<div class='category-container' data-cat-id='{$current_category}'>";
  • 隐藏文章重复ID修改:
// 原代码
echo ("<div class='card recrutements hide-block'  id='$cat'>");
// 替换为
echo ("<div class='card recrutements hide-block category-{$cat}' data-category='{$cat}'>");

2. 替换jQuery交互逻辑

实现「点击后收起其他分类展开内容、当前分类每次新增显示4篇隐藏文章」的需求:

$(document).ready(function(){
    $(".show-more").click(function(){
        const currentCatId = $(this).data("id");
        // 收起其他分类的所有已展开隐藏文章
        $(".hide-block").not(`.category-${currentCatId}`).css("display", "none");
        // 恢复其他分类的按钮状态
        $(".show-more").not(this).text("Show more").removeClass("disabled");
        // 选中当前分类未展示的隐藏文章,取前4篇展示
        const currentHiddenList = $(`.category-${currentCatId}.hide-block:hidden`);
        currentHiddenList.slice(0,4).css("display", "block");
        // 无更多内容时修改按钮状态
        if(currentHiddenList.length <= 4){
            $(this).text("无更多内容").addClass("disabled");
        }
    });
});

效果参考

效果图示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:48:00