Javascript jquery.click()仅在单击两次时有效

Javascript jquery.click()仅在单击两次时有效,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个带有class left sidebar nav link的锚定标记,单击它时应该检查href是否与url匹配,如果匹配,应该用粗体显示,但它只在单击两次时有效,而不是一次 <a class="left-sidebar-nav-link" href="#anchor"> SubMenu1</a> $(document).ready(function() { $(".left-sidebar-nav-link").on("click", function

我有一个带有class left sidebar nav link的锚定标记,单击它时应该检查href是否与url匹配,如果匹配,应该用粗体显示,但它只在单击两次时有效,而不是一次

<a class="left-sidebar-nav-link" href="#anchor"> SubMenu1</a> 

$(document).ready(function() {
    $(".left-sidebar-nav-link").on("click", function() {
        var href1 = $(this).attr("href");
        if (window.location.href.indexOf(href1) >= 0) {
            $(this).css('font-weight', 'bold');
        }
    });
});

$(文档).ready(函数(){
$(“.left sidebar nav link”)。打开(“单击”,函数(){
var href1=$(this.attr(“href”);
if(window.location.href.indexOf(href1)>=0){
$(this.css('font-weight','bold');
}
});
});

因为存在
href
通过使用
事件来防止默认行为。preventDefault

$(document).ready(function() {
  $(".left-sidebar-nav-link").on("click", function(event) {
    event.preventDefault();
    alert('1')
    var href1 = $(this).attr("href");
    if (window.location.href.indexOf(href1) >= 0) {
      $(this).css('font-weight', 'bold');
    }
  });
});
试试这个

$(文档).ready(函数(){
$(“.left sidebar nav link”)。在(“单击”,函数(){
var href1=$(this.attr(“href”);
window.location.href=href1;
if(window.location.href.indexOf(href1)>=0){
$(this.css('font-weight','bold');
}
});
});

就逻辑而言,您的代码没有意义。您正在单击一个a标记,该标记会将URL更改为此标记的
href
。因此,检查位置是否为href就像测试a标记是否有效

双击的发生是因为事件按以下顺序发生:

  • 你的网址是
  • 您可以单击a标记
  • 单击“火灾处理程序”。检查URL是否包含标签的href(它不包含)
  • 由于您没有使用
    event.preventDefault()
  • URL更改为
  • 在下一次单击中,单击处理程序将成功
  • 编辑:

    更可靠的解决方案是有一个活动类,可以将其添加到单击的项目中

    $('nav')。委托('.inactive','click',函数(事件){
    var selectedTab=this.id.split('-')[1];
    document.location.hash=selectedTab;
    var$this=$(this);
    美元这个
    .removeClass('inactive')
    .addClass(“主动”);
    $this.sibbins()
    .addClass(“非活动”)
    .removeClass(“活动”);
    });
    
    正文{
    字体:arial;
    }
    导航{
    利润率:50像素;
    字号:2rem;
    文本对齐:居中;
    }
    保险商实验室{
    显示:内联块;
    列表样式类型:无;
    }
    李{
    高度:25px;
    浮动:左;
    右边距:0px;
    填充:0 20px;
    }
    李阿{
    文字装饰:无;
    颜色:#878787;
    文本转换:大写;
    -webkit过渡:所有0.5s轻松;
    -moz过渡:所有0.5s轻松;
    -o型过渡:所有0.5s的轻松度;
    -ms过渡:所有0.5s轻松;
    过渡:所有0.5s缓解;
    }
    李娜:停下来{
    颜色:#666;
    }
    主动的,主动的{
    字体大小:粗体;
    颜色:#373737;
    }
    * {
    框大小:边框框;
    }
    
    
      选项卡1 选项卡2 选项卡3 选项卡4

    最后!!,这对我来说很有效,我试图在散列更改时触发click事件

    $(window).on('hashchange', function(e){
     $(".left-sidebar-nav-link").on("click", function() {
        window.location.href = $(this).attr("href");
        var href1 = $(this).attr("href");
        if (window.location.href.indexOf(href1) >= 0) {
            $(this).css('font-weight', 'bold');
        }
     }); 
    });
    

    html代码?没有HTML和CSScode,我们无法帮助您更新HTML,没有csscan,您不能尝试
    数据-
    属性,而不是
    href
    a
    标记?地址栏在第一次单击时是否包含
    #锚定
    窗口。location.href
    加载新页面,剩下的代码将如何执行?因为它是锚定链接,所以页面不会跳转
    $(window).on('hashchange', function(e){
     $(".left-sidebar-nav-link").on("click", function() {
        window.location.href = $(this).attr("href");
        var href1 = $(this).attr("href");
        if (window.location.href.indexOf(href1) >= 0) {
            $(this).css('font-weight', 'bold');
        }
     }); 
    });