我以不同的方式做到了。
首先我为所有菜单项添加了唯一的类名。我使用了类而不是 id,因为它在页面上多次使用了每个菜单。
然后我使用此代码生成活动 css...
<?php if($varset1a == "500") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#idname1a ul.classname li.classname1").addClass("active"); });</script>
<?php } ?>
<?php if($varset1a == "1000") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#idname1b ul.classname li.classname2").addClass("active"); });</script>
<?php } ?>
<?php if($varset2a == "name1") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#anotheridname1 ul.classname li.anotherclassname1").addClass("active"); });</script>
<?php } ?>
<?php if($varset2a == "name2") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#anotheridname2 ul.classname li.anotherclassname2").addClass("active"); });</script>
<?php } ?>
有2组菜单,每组有6个变量,每个菜单有很多链接,所以上面要复制粘贴很多次才能覆盖所有的组合。以上只是第一组的两条规则,第二组的两条规则。规则远不止这些。
假设有这么多:
varset1a1 到 varset1a17
那么 varset1b 有 1 到 17,然后 varset1c 有 1 到 17,然后 varset1d 有 1 到 17,然后 varset1e 有 1 到 17。
然后将所有这些加倍并将 varset1 更改为 varset2,这就是有多少不同的规则。实际上更多是因为菜单 2 的链接比菜单 1 多。
程序很多,但每个菜单只有 6 行在 html 源代码中生成。
这是一个示例,如果使用了两个菜单中的所有 6 个。如果使用更少的菜单,它会更少。使用的菜单数量各不相同,但这是全部数量:
<script type='text/javascript'>$(document).ready(function() { $("#id1a ul.class li.class1a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id2a ul.class li.class2a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id3a ul.class li.class3a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id4a ul.class li.class4a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id5a ul.class li.class5a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id6a ul.class li.class6a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id1b ul.class li.class1b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id2b ul.class li.class2b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id3b ul.class li.class3b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id4b ul.class li.class4b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id5b ul.class li.class5b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id6b ul.class li.class7b").addClass("active"); });</script>
如果我将所有字符都放在一个 标记集和一个文档就绪子句之间,也许我可以减少字符数?我讨厌将 php 放在 jquery 之间,因为 Dreamweaver 很多时候会产生语法错误。
编辑:
好的,现在完整的html输出是这样的,它仍然有效:
<script type='text/javascript'>
$(document).ready(function() {
$("#id1a ul.class li.class1a").addClass("active");
$("#id2a ul.class li.class2a").addClass("active");
$("#id3a ul.class li.class3a").addClass("active");
$("#id4a ul.class li.class4a").addClass("active");
$("#id5a ul.class li.class5a").addClass("active");
$("#id6a ul.class li.class6a").addClass("active");
$("#id1b ul.class li.class1b").addClass("active");
$("#id2b ul.class li.class2b").addClass("active");
$("#id3b ul.class li.class3b").addClass("active");
$("#id4b ul.class li.class4b").addClass("active");
$("#id5b ul.class li.class5b").addClass("active");
$("#id6b ul.class li.class7b").addClass("active");
});
</script>
我这样做的方式是制定这样的规则:
<script type='text/javascript'>
$(document).ready(function() {
<?php if($varset1a == "500") { ?>$("#id1a ul.class li.class1a").addClass("active");<?php } ?>
<?php if($varset1a == "1000") { ?>$("#id2b ul.class li.class2a").addClass("active");<?php } ?>
<?php if($varset2a == "name1") { ?>$("#id2a ul.class li.class1b").addClass("active");<?php } ?>
<?php if($varset2a == "name2") { ?>$("#id2b ul.class li.class2b").addClass("active");<?php } ?>
});
</script>