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

jQuery修改PHP foreach循环生成元素CSS仅单个生效如何解决

问题根因

HTML规范要求id属性全局唯一,同一页面内不能出现多个相同id的元素,浏览器解析时只会匹配第一个命中id的元素,因此你写的$("#hide")只能选中第一个被隐藏的div,自然只有单个元素生效。

修复步骤

1. 替换id选择器为类选择器(修改CSS)

类属性支持重复绑定到多个元素,符合你的使用场景:

<style>
  .hide{
  display:none;
}
</style>

2. 修改PHP循环逻辑,给大于5的元素追加hide类

注意不要重复声明class属性,直接拼接类名即可,同时顺手修复你原有代码中$i = 0:的语法错误(把冒号改成半角分号):

<?php 
  $i = 0;
  foreach($payemnts as $p){
    $i++;
    $class_str = $i > 5 ? 'row hide' : 'row';
?>
  <div class="<?php echo $class_str; ?>">
    <div class="col">
      <a href="<?php echo get_permalink($id); ?>">
        <img src="<?php echo get_the_post_thumbnail_url($id); ?>">
      </a>
    </div>
    <div class="col">

    </div>
    <div class="col">

    </div> 
  </div>  
<?php }  /* end foreach */?>
<div class="row">
   <button type="button" onclick="showAll()" class="btn btn-sm  ">READ MORE</button> 
</div>

3. 修改jQuery选择器,匹配所有hide类元素

推荐用removeClass的方式移除隐藏属性,比直接修改css样式扩展性更强:

<script>
    function showAll() { 
        // 方案1:直接修改样式
        // $(".hide").css({'display':'flex'});  
        // 方案2:移除隐藏类(更推荐)
        $(".hide").removeClass('hide');
    }
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:57:03