如何在没有2个项目的情况下更改菜单项href
How to change menu items href without 2 items?
我被jQuery更改了我的菜单项href,并检查了网站地址:
if(window.location.href.indexOf("en") > -1) {
var link = $('#main-nav a');
link.each(function(){
this.href += '-en';
});
};
它工作得很好,但我不想为两个特殊的链接添加字符串'-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
返回绝对路径,例如http://www.domain.com/yourpage.html#special1.所以,你有几种方法可以做到这一点,如下所示。
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";
});
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在没有2个项目的情况下更改菜单项href
- 如何在两种条件下显示相同的上下文菜单项
- 使用jquery突出显示下一个菜单项
- $.ajax json 下拉菜单项
- 从 URL 获取选项值,以显示下拉列表中的特定菜单项
- 如何从数据库中填充下拉菜单项
- 如何在不同的下拉列表中显示所有菜单和子菜单项
- 两个依赖于Rails模型中数组的下拉菜单项
- 当单击下一个菜单项时,防止向下滑动的子菜单向上滑动
- 如何右对齐/调整引导下拉菜单项
- 触摸设备的jQuery下拉导航.单击另一个菜单项时不能隐藏菜单项
- 未呈现选定的下拉菜单项
- 单击按钮上的警报下拉菜单项
- 垂直下拉菜单显示子菜单,当单击另一个菜单项时关闭前一个菜单项
- 如何在此下拉菜单中显示子菜单项
- 引导导航栏下拉,水平显示菜单项
- 一旦用户向下滚动页面150px,我如何将图像显示为菜单项?
- Wordpress下拉菜单- ajaxify插件删除类'current-menu-item'从菜单项.有