Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据位置和相应的href添加类?_Javascript_Jquery_Html_Menu - Fatal编程技术网

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()