如何在PHP中为MySQL动态生成的链接设置active类?
解决方案:动态给选中的数据库生成链接添加
active类 这问题我太熟了!因为你的页面是通过URL参数(rgnId)来区分当前选中的区域,所以我们可以直接在PHP渲染链接时,对比URL里的参数值,动态给对应的链接加上active类,具体操作如下:
步骤1:获取当前URL中的rgnId参数
首先在PHP代码开头(循环生成链接之前),获取当前页面URL里的rgnId值,默认设为0(对应「All」选项):
<?php // 获取当前选中的区域ID,默认0对应"All" $currentRgnId = isset($_GET['rgnId']) ? intval($_GET['rgnId']) : 0; ?>
用intval()是为了安全过滤,避免非数字参数带来的问题。
步骤2:修改「All」选项的active状态
把原来的「All」链接代码改成动态判断的形式,当currentRgnId为0时自动加上active类:
<li value="0"> <a class="<?php echo ($currentRgnId == 0) ? 'active' : ''; ?>" id="show_0" onClick="UAEHolydayDetails(0)"> All<span class="badge"><?php echo $uaedetailscount?></span> </a> </li>
步骤3:修改动态生成区域链接的active状态
在循环生成数据库区域链接时,对比当前循环的rgnId和currentRgnId,匹配的话就添加active类:
<?php $i=0; while($rowrgn = $rsltrgn->fetchAssoc()) { ?> <li> <a id="show_<?php echo $rowrgn['rgnId']; ?>" onClick="UAEHolydayDetails(<?php echo $rowrgn['rgnId']; ?>)" <?php echo ($rowrgn['rgnId'] == $currentRgnId) ? 'class="active"' : ''; ?> > <?php echo $rowrgn['rgnName']; ?> <span class="badge"><?php echo $rowrgn['regioncount'];?></span> </a> </li> <?php } ?>
小提醒
注意到你提供的JS函数是HolytypeDetails,但链接里调用的是UAEHolydayDetails,记得保持函数名一致,不然点击链接会没有效果哦!修正后的JS函数应该是:
<script> function UAEHolydayDetails(id){ $('#rgnId').val(id); window.location='uae-holidays.php?rgnId='+id; } </script>
这样每次页面刷新后,PHP都会根据URL里的rgnId参数,自动给对应的链接加上active类,完美解决动态链接的选中状态问题!
内容的提问来源于stack exchange,提问作者Aishwaryas
相关产品推荐
相关产品推荐

