Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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 如何根据当前窗口url向锚定标记的同级ul添加类?_Javascript - Fatal编程技术网

Javascript 如何根据当前窗口url向锚定标记的同级ul添加类?

Javascript 如何根据当前窗口url向锚定标记的同级ul添加类?,javascript,Javascript,我正在Drupal8上开发一个动态边栏。我创建了一个函数来获取锚定标记的href,如果与window.location.href匹配,它会向锚定标记添加一个类。但是,我需要将该类添加到锚标记的同级ul 我尝试使用sibles()、next()、find()方法通过jquery将该类添加到ul中,但我无法将该类添加到标记的sibling ul中 HTML Javascript var sideBarUl = $('.aside--sidebar u

我正在Drupal8上开发一个动态边栏。我创建了一个函数来获取锚定标记的href,如果与window.location.href匹配,它会向锚定标记添加一个类。但是,我需要将该类添加到锚标记的同级ul

我尝试使用sibles()、next()、find()方法通过jquery将该类添加到ul中,但我无法将该类添加到标记的sibling ul中

HTML


Javascript

var sideBarUl = $('.aside--sidebar ul li');
        sideBarUl.each(function(){
            if($(this).children("ul").length) {
                $(this).find('a').addClass('sidebarlink-with--content');
            }
        });

        $(function(){
            var sideBarLinkContent = $('.sidebarlink-with--content');
            var currentWindowUrl = window.location.href;

            for ( var i = 0; i < sideBarLinkContent.length; i++) {
                if(sideBarLinkContent[i].href == currentWindowUrl){
                    sideBarLinkContent[i].className = 'sidebar-link--opened';
                }
            }
        });
var sideBarUl=$('.aside--sidebarulli');
sideBarUl.each(函数(){
if($(此).children(“ul”).length){
$(this.find('a').addClass('sidebarlink-with--content');
}
});
$(函数(){
var sideBarLinkContent=$('.sidebarlink with--content');
var currentWindowUrl=window.location.href;
对于(变量i=0;i

我只是想将类添加到与窗口url匹配的当前锚定标记中,但我想将类添加到其同级ul中,以将显示更改为block

您的js中有一些错误,但基本正确

好的,这是我在第一个函数中首先发现的,在这里你可以检查li是否有孩子

        // not if($(this).children("ul").length) but
         if($(this).children("ul").length> 0) { 
            $(this).find('a:not([href=""])').addClass('sidebarlink-with--content');
        }
第二个问题是,当您验证href时,它也是错误的

您正在做的是检查

(relative) /en/services-prehospitaliers ==(full) www.xxx.com/en/services-prehospitaliers
这是错误的,因为href包含sideBarLinkContent[i]所在的完整url。href只包含它应该包含的相对部分

             for ( var i = 0; i < sideBarLinkContent.length; i++) {
                if(currentWindowUrl.indexOf( sideBarLinkContent[i].href) != -1){
                    sideBarLinkContent[i].className = 'sidebar-link--opened';
                }
            }
for(变量i=0;i
您的html似乎有语法错误。您不能使用

             for ( var i = 0; i < sideBarLinkContent.length; i++) {
                if(currentWindowUrl.indexOf( sideBarLinkContent[i].href) != -1){
                    sideBarLinkContent[i].className = 'sidebar-link--opened';
                }
            }