单击事件后将类添加到所有匹配的href

时间:2018-11-07 12:33:25

标签: javascript jquery href each

我正在尝试将“活动”类添加到所有具有与刚刚单击的href相同的href的链接。

我有多个模态,其中包含重复的锚导航,因此MODAL A具有到MODAL B的链接,当我单击MODAL B时,MODAL B链接在新打开的锚中应具有“活动”类。

除非再次单击相同的锚链接,否则下面的代码不会将活动类添加为活动类,因为我假设单击#anchor2时URL仍设置为#anchor1,因此它仍尝试将“活动”添加至#anchor1

我需要一种方法,点击#anchor2,然后一旦网址更新,然后搜索其他包含#anchor2的链接

或单击#anchor2,然后搜索包含#anchor2的任何其他链接,并添加“活动”类

jQuery('.featured li a').on( "click", function() {      
    jQuery(".featured li a").each(function() {
    if (this.href == window.location.href) {
        jQuery(this).parent().addClass("active");
    } else {
        jQuery(this).parent().removeClass("active");
    }
    });
});

3 个答案:

答案 0 :(得分:3)

在点击监听器功能范围内,import re rx = r'^#[^\r\n]*|"""(.*?)"""' s = "def foo():\n \"\"\"\n this\n here\n \"\"\"\n\n pass\n\n\n# def foo():\n# \"\"\"\n# this\n# here\n# \"\"\"\n# \n# pass" res = re.findall(rx, s, re.DOTALL|re.MULTILINE) print(list(filter(None, res))) # => ['\n this\n here\n '] 尚未更新为新值。所以你需要这个:

window.location.href

答案 1 :(得分:0)

只需遍历每个锚点并将其关闭,然后在选择器中使用href匹配所有相同的锚点并将其打开。

jQuery('.featured li a').on('click', function() {
  jQuery('.featured li a').each(function({
    jQuery(this).parent().removeClass("active");
  });
  jQuery('.featured li a[href="'+this.href+'"]').each(function({
    jQuery(this).parent().addClass("active");
  });
})

答案 2 :(得分:0)

使用此

jQuery('.featured li a').on( "click", function() {
    //here 'this' referencing anchor that is clicked.
    var clicked_anchor = this;
    jQuery(".featured li a").each(function() {
    //here 'this' referencing current iterating anchor 
    if (this.href == clicked_anchor.href) {
        jQuery(this).parent().addClass("active");
    } else {
        jQuery(this).parent().removeClass("active");
    }
    });
});