Javascript 如何根据位置和相应的href添加类?
我有一个带有简单标记的菜单,我的目标是根据当前页面的名称自动向菜单项添加一个类 相关标记为:Javascript 如何根据位置和相应的href添加类?,javascript,jquery,html,menu,Javascript,Jquery,Html,Menu,我有一个带有简单标记的菜单,我的目标是根据当前页面的名称自动向菜单项添加一个类 相关标记为: <ul class="sub-menu"> <li > <a href="page_example_one.html"> <i class="icon-time"></i> Timeline</a> &
<ul class="sub-menu">
<li >
<a href="page_example_one.html">
<i class="icon-time"></i>
Timeline</a>
</li>
<li >
<a href="page_example_two.html">
<i class="icon-cogs"></i>
Page Two</a>
</li>
.... Many other elements
</ul>
以上两种方法对我来说都失败了-(带VAR的注释方法和连接的方法)
但是因为我的JS技能很低,我真的看不出我做错了什么(可能是对了解JS的人来说非常明显的事情)
解决此问题后,我还想知道如何根据当前页面链接向父菜单项(如果是子菜单)添加跨距或类…通过其类
ul.子菜单将子菜单设置为目标。alternativley您还可以通过子菜单
更一般地针对类中的所有项<代码>子菜单
单独针对理论上的
元素
然后获取链接的父级(代码):
var currentMenuItem = jQuery(".submenu li a[href='" + currentUrl + "']").parent();
还要检查currentUrl是否等于href。您可以将currentUrl输出到控制台进行如下调试:
console.log(currentUrl);
添加演示子菜单仅针对特定菜单。。。在jQuery中这样做不对吗?我认为它可能更正确,因为脚本不需要扫描所有的otehr
元素——但我是从PHP的角度讲的——在JS中可能都是错误的。这是可以的。但您需要通过其id#子菜单
或class。子菜单
将其作为目标。您没有在示例代码中显示子菜单。否。。事实上我没有。你是对的。很抱歉将更正帖子中编辑的问题。希望它能解决您的问题,并稍微解释一下css选择器删除其他标记子菜单
和li
的原因是什么?我想您这样做是为了允许简单使用parent()
-但这在所有情况下都正确吗?我可能在页面上有其他具有相同URL的
元素…在您的情况下,使用较少的标记选择器可以加快查询速度。如果您的页面具有具有相同URL的其他元素,则可以使用更多的标记
选择器或类
选择器进行查询。请向我们展示您的html,我们可以获得更多信息。我猜子菜单
字符串是类名
?如果是类名
,则必须使用。子菜单
,这是一个jsbin演示。在这里我认为它是有效的。如果你有相同的URL元素,你自己不能解决它,你可以给我发电子邮件,我会很乐意帮助你。
var currentMenuItem = jQuery(".submenu li a[href='" + currentUrl + "']").parent();
console.log(currentUrl);
var currentMenuItem = jQuery("a[href='" + currentUrl + "']").parent()