Javascript 检测一个';a';带有href属性的标记,该属性等于当前页面的url
我的任务包含几个步骤:Javascript 检测一个';a';带有href属性的标记,该属性等于当前页面的url,javascript,jquery,html,Javascript,Jquery,Html,我的任务包含几个步骤: 隐藏页面中的所有链接 检测href属性等于当前页面url的链接元素 显示此元素的邻居 我使用的html如下所示: 我试图用display:none隐藏所有链接元素,我只想显示当前链接顶部和底部的两个链接。我使用的jQuery代码: $(文档).ready(函数(){ var thispageurl=window.location.href; $(“.alllinkswrap”).children().each(function()){ if(this.href.ind
我试图用display:none
隐藏所有链接元素,我只想显示当前链接顶部和底部的两个链接。我使用的jQuery代码:
$(文档).ready(函数(){
var thispageurl=window.location.href;
$(“.alllinkswrap”).children().each(function()){
if(this.href.indexOf(thispageurl))
{
$(this.next().show();
$(this.prev().show();
}
});
});
我猜这个错误在
$(这个)中的某个地方。下一步,依此类推。但对jQuery来说还是新的。您能检测到问题吗?原版
您的索引(…)需要检查是否为非-1,如果在此.href中未找到thispageurl
,它将返回-1。或者您可以检查它是否等于0,因为当找到目标链接时,应该在索引0处找到它
更新
如果要检查当前URL和目标href是否相等,我们需要使用Javascript中的=
或==
比较。这是因为当页面位于子分区中或您位于域中时,我们会遇到问题。例如:
如果thispageurl
=http://url.com
和this.href
=http://url.com/page1.html
usingthis.href.indexOf(thispageurl)
将返回0,但这是不正确的。如果我们在该场景中反转了forthispageurl.indexOf(this.href)
的索引,.indexOf()
返回-1。同样,如果我们将thispageurl
和this.href
翻转到http://url.com/page1.html
和http://url.com
我们分别遇到了类似的情况,这取决于我们采用的索引
所以我更新了下面的代码来检查字符串值是否相等
var thispageurl=window.location.href;
$(“.alllinkswrap”).children().each(函数(){$(this.hide()})
$(“.alllinkswrap”).children().each(function()){
如果(this.href==thispageurl)
{
$(this.next().show();
$(this.prev().show();
}
});代码>
因此,如果当前站点是blablabla3.com
您想显示blabla2.com
和blabla4.com
?如果window.location.href==this.href
,.indexOf()
将返回0
;你的情况是“错误的”。当然。举个例子,我们就这样吧way@Georgewindow.location.href始终是完整的URL,以http://domain.com/path
。所以indexOf
永远不能返回0。@Barmar但是这些锚定标记的href
属性将是解析的URL,即:http://domain.com/blabla1.com
(在这种情况下)?我是不是误解了这个问题?也许你有一些额外的代码?运行上面的代码段显示链接2和4,这是您想要的功能?上面的代码段是在文档准备就绪时启动的(即使它不在代码段中),请确保您保留代码的这一部分。好的,您的代码显然是有效的,因此,我将尝试了解我的代码中发生了什么。嗯,您的链接是动态生成的还是硬编码的?动态生成的