Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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 检测一个';a';带有href属性的标记,该属性等于当前页面的url_Javascript_Jquery_Html - Fatal编程技术网

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

我的任务包含几个步骤:

  • 隐藏页面中的所有链接
  • 检测href属性等于当前页面url的链接元素
  • 显示此元素的邻居
  • 我使用的html如下所示:

    
    
    我试图用
    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
    using
    this.href.indexOf(thispageurl)
    将返回0,但这是不正确的。如果我们在该场景中反转了for
    thispageurl.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@George
    window.location.href始终是完整的URL,以
    http://domain.com/path
    。所以
    indexOf
    永远不能返回0。@Barmar但是这些锚定标记的
    href
    属性将是解析的URL,即:
    http://domain.com/blabla1.com
    (在这种情况下)?我是不是误解了这个问题?也许你有一些额外的代码?运行上面的代码段显示链接2和4,这是您想要的功能?上面的代码段是在文档准备就绪时启动的(即使它不在代码段中),请确保您保留代码的这一部分。好的,您的代码显然是有效的,因此,我将尝试了解我的代码中发生了什么。嗯,您的链接是动态生成的还是硬编码的?动态生成的