Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 如何在没有2项的情况下更改菜单项href?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在没有2项的情况下更改菜单项href?

Javascript 如何在没有2项的情况下更改菜单项href?,javascript,jquery,Javascript,Jquery,我被jQuery更改了我的菜单项href,并检查了网站地址: if(window.location.href.indexOf("en") > -1) { var link = $('#main-nav a'); link.each(function(){ this.href += '-en'; }); }; 它的工作非常好,但我不想为2个特殊链接添加字符串'-en'。我怎么能做到 我试过这样做,但不起作用: if(window.locat

我被jQuery更改了我的菜单项href,并检查了网站地址:

    if(window.location.href.indexOf("en") > -1) {
    var link = $('#main-nav a');
        link.each(function(){
    this.href += '-en';
});
    };
它的工作非常好,但我不想为2个特殊链接添加字符串'-en'。我怎么能做到

我试过这样做,但不起作用:

 if(window.location.href.indexOf("en") > -1) {
    var link = $('#main-nav a');
        link.each(function(){
            if(link.href === "#special1") || (link.href === "#special2"){
                return this.href;
            } else{
    this.href += '-en';
}
});
    };

您的
if
语句有语法错误。第一个
关闭
if
表达式。将其更改为:

if (link.href === "#special1" || link.href === "#special2") { 
还要注意,
href
属性返回一个绝对路径。您应该使用
.getAttribute()
方法获取元素的
href
属性,或者读取锚点的
hash
属性

您还应该将
link.href
更改为
this.href

我建议:

var blackList =  ["#special1",  "#special2"];
$('#main-nav a').filter(function() {
    return $.inArray(this.getAttribute('href'), blackList) === -1;
}).prop('href', function(_, href) {
   return href + '-en';
});
另一个选项是使用
.not()
方法:

 $('#main-nav a')
      // exclude the elements
     .not('[href="#special1"], [href="#special2"]')
      // update `href` properties
     .prop('href', function(_, href) { return href + '-en'; });

首先,您的
if
条件中有一个错误
.href
返回绝对路径,例如。所以,你有几种方法可以做到这一点,如下所示

if(link.href.indexOf("#special1") !== -1 || link.href.indexOf("#special2") !== -1) {}

if(link.href.match(/\#special[1-2]/i) !== null) {}

if(link.attr("href") === "#special1" || link.attr("href") === "#special2") {}
因此,您的代码也可以写成:

var $links = $('#main-nav a');
$links.filter(function() {
     return this.href.match(/\#special[1-2]/i) === null
}).prop("href", function() {
    return this.href  + "-en";
});

您的
if
语句有语法错误。将其更改为:
if(link.href==”| special1“| link.href==”| special2”){
谢谢,我修复了此问题,但所有链接都修改了hrefVohuman,感谢它工作得非常好,但我的链接只有指向节id的href,当此函数运行并添加字符串时,显示完整的网站href“”但我只想在href中添加“-en”,比如“#section en”。我如何解决这个问题?