Javascript 包括php菜单,在单击时为链接分配活动类
PHP、CSS和JS扬声器!) 我在一个php文件中包含一个菜单。我需要它,因为它需要更少的时间来改变链接。但是,现在的任务是使用活动链接。当我点击一个链接,它应该采取积极的,以及父链接也应该采取积极的链接。 我是用PHP做的,它工作得很好,但是如果我继续,将会有很多PHP语句,它也可能会影响性能,并且对代码的可读性有不良影响。请查看以下代码(这只是一个片段),即菜单的1部分,而不是整个菜单)Javascript 包括php菜单,在单击时为链接分配活动类,javascript,php,css,Javascript,Php,Css,PHP、CSS和JS扬声器!) 我在一个php文件中包含一个菜单。我需要它,因为它需要更少的时间来改变链接。但是,现在的任务是使用活动链接。当我点击一个链接,它应该采取积极的,以及父链接也应该采取积极的链接。 我是用PHP做的,它工作得很好,但是如果我继续,将会有很多PHP语句,它也可能会影响性能,并且对代码的可读性有不良影响。请查看以下代码(这只是一个片段),即菜单的1部分,而不是整个菜单) / 问:有什么方法可以用PHP或Java脚本或任何东西来处理它吗 提前
/
问:有什么方法可以用PHP或Java脚本或任何东西来处理它吗
提前谢谢你 这是我使用jquery的示例。在您的例子中,您只需将活动类呈现到最后一个选中的子菜单,然后使用jquery将css规则应用于此节点的父级
$('li')。单击(函数(){
$(this).children('span:first child').addClass('active');
$(this).parent('li span:first child').addClass('active');
});代码>
li{
宽度:100px;
高度:40px;
}
.主动{
背景色:#12323A;
}
李:悬停{
光标:指针;
}
- 一级
- 二级
- 2.1级
- 三级
- 3.1级
这是我使用jquery的示例。在您的例子中,您只需将活动类呈现到最后一个选中的子菜单,然后使用jquery将css规则应用于此节点的父级
$('li')。单击(函数(){
$(this).children('span:first child').addClass('active');
$(this).parent('li span:first child').addClass('active');
});代码>
li{
宽度:100px;
高度:40px;
}
.主动{
背景色:#12323A;
}
李:悬停{
光标:指针;
}
- 一级
- 二级
- 2.1级
- 三级
- 3.1级
将所有菜单链接放在单个数组中:
$menu = [
[
'title' => 'home',
'url' => 'index.php',
],
[
'title' => 'Menu with dropdown',
'key' => 'subs',
'items' => [
[
'title' => 'Sub 1',
'url' => 'page/sub1',
],
[
'title' => 'Sub 2',
'url' => 'page/sub2',
],
...
],
...
]
]
现在使用递归函数运行$menu
并生成菜单结构:
showMenu($menu);
function showMenu(&$menu, $level = 0) {
foreach ($menu as $item) {
$class = getItemClass($item, $level).' '.(isActive($item['key'], $level) ? ' active' : '');
if (isset($item['items'])) {
echo "<ul>";
echo "<li class='{$class}'>";
showMenu($item, $level + 1);
echo "</li>";
echo "</ul>";
} else {
echo "<li class='{$class}'><a href='{$item['url']}'>{$item['title']}</a></li>";
}
}
}
ul{
填充:0;
列表样式:无;
}
.sub>li>ul{
左侧填充:10px;
}
.主动{
边框:1px实心#ddd;
}
李,积极,,
主动的,主动的{
背景色:#000;
颜色:白色;
}
-
-
- 子项
-
-
-
将所有菜单链接放在单个数组中:
$menu = [
[
'title' => 'home',
'url' => 'index.php',
],
[
'title' => 'Menu with dropdown',
'key' => 'subs',
'items' => [
[
'title' => 'Sub 1',
'url' => 'page/sub1',
],
[
'title' => 'Sub 2',
'url' => 'page/sub2',
],
...
],
...
]
]
现在使用递归函数运行$menu
并生成菜单结构:
showMenu($menu);
function showMenu(&$menu, $level = 0) {
foreach ($menu as $item) {
$class = getItemClass($item, $level).' '.(isActive($item['key'], $level) ? ' active' : '');
if (isset($item['items'])) {
echo "<ul>";
echo "<li class='{$class}'>";
showMenu($item, $level + 1);
echo "</li>";
echo "</ul>";
} else {
echo "<li class='{$class}'><a href='{$item['url']}'>{$item['title']}</a></li>";
}
}
}
ul{
填充:0;
列表样式:无;
}
.sub>li>ul{
左侧填充:10px;
}
.主动{
边框:1px实心#ddd;
}
李,积极,,
主动的,主动的{
背景色:#000;
颜色:白色;
}
-
-
- 子项
-
-
-
你的href地址看起来怎么样?它们是引用url还是像单击事件侦听器上的ajax请求一样?你能给出一个示例url,它代表菜单中的url吗?使用PHP,JS会很混乱。听着,如果你知道路径就没那么复杂了:class=”“
你可以像这样继续你的状态:class=”“
@Marcel谢谢你的回复。我没有使用ajax。该站点处于脱机状态((@Troyer谢谢你的回复。问题是,如果我使用上面的方法,我必须在菜单文件中的每个链接中放入一条php语句。结果我得到了很多php语句,阅读起来会非常困难。你的href地址看起来怎么样?它们是指url还是像单击事件侦听器上的ajax请求?Can你给出一个示例url,它代表菜单中的url?使用PHP,JS会很混乱。看,如果你知道路径,就不会那么复杂:class=“”
你可以像这样恢复你的状态:class=“”
@Marcel谢谢你的回复。我没有使用ajax。网站离线((@Troyer感谢您的回复。问题是,如果我使用上面的方法,我必须在菜单文件中的每个链接中放入一条php语句。结果我得到了很多php语句,阅读起来会非常困难。亲爱的Justinas!感谢您的回复!我认为您的代码最适合我的目的。但我不知道Java Scrip(。这就是我在这里寻求帮助的原因。我已经在我的服务器上上传了网站,现在你可以看看代码。目前我只做了两个链接,它们有效,分别是“主页->关于我们”和“塔吉克斯坦->塔吉克斯坦->塔吉克斯坦历史”,我认为这足以理解这个问题。这是我的网站:www.discoverthepamirs.com你能为我的案例修改你的Java脚本代码吗?亲爱的Justinas!谢谢你的回复!我认为你的代码最适合我的目的。但我不知道Java脚本((.这就是我在这里寻求帮助的原因。我已经在我的服务器上上传了网站,现在你可以看看代码。目前我只做了两个链接,它们都有效,分别是“主页->关于我们”和“塔吉克斯坦->塔吉克斯坦->塔吉克斯坦”