【问题标题】:jQuery selector for links with # in href attribute用于在 href 属性中带有 # 的链接的 jQuery 选择器
【发布时间】:2012-01-30 18:31:39
【问题描述】:

我尝试使用这个 jQuery 选择器:

$("a:has(href*=#)").click(function() {
     alert('works');
});  

但它似乎不起作用。我想选择所有在 href 属性中具有锚点的标签(那里有 # 符号)

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:
    $("a[href*=#]").click(function(e) {
        e.preventDefault();
        alert('works');
    });  
    

    【讨论】:

    • 我相信@simPod 正在尝试选择<a href='#'> 而不是<a href='link.com/page/#hash'> 的案例
    • @KorvinSzanto 如果是这样,那么你的答案是正确的。
    • 根据@simPod 的澄清,我们都错了!他要http://api.jquery.com/attribute-starts-with-selector/
    • 报价!我在那里缺少引号!
    • 它在某些情况下不起作用。如果您希望它更可靠,您应该像这样逃避#$('a[href*=\\#]')stackoverflow.com/a/18365991/553921
    【解决方案2】:

    您必须使用attribute starts with selector 进行选择:

    $('a[href^="#"]').click(function(){
        alert('Works!');
    });
    

    查看my jsfiddle

    【讨论】:

    • attribute-contains selector,因为href 属性“等于”#。此外,API 明确指出,被评估的值必须被引用。
    • @DavidThomas,他正在尝试选择 <a href='#'> 的案例,而不是 <a href='index.php#header'> 之类的案例。另外,感谢您指出引用 =D。
    • 实际上,我需要选择#header,我想到的方法是在href中选择所有<a>#
    • 在这种情况下,你会希望$('a[href=^"#"]') 阻止选择像http://en.wikipedia.org/wiki/Random#A_number_is_.22due.22 这样的href 更新我的答案!
    • @KorvinSzanto 你正在工作,但这里的代码有一点错字,^ 符号应该在等号之前
    【解决方案3】:

    *= 将在任何地方过滤包含给定字符串的属性

    $("a[href*='#']").click(function() {
        alert('works');
    });
    

    还要注意

    $("a[href^='#']").click(function() {
        alert('works');
    });
    

    将选择任何其href #开头的锚点

    【讨论】:

    • 你是唯一一个添加了以选择器开头的属性的人,这恰好是他真正要求的=D gj
    • 我认为我的问题很清楚,但它比看起来更复杂:D
    • 呵呵 - jQuery 的解决方案通常比你想象的要简单 :)
    • 感谢^= 选择器,这是我试图找到的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    相关资源
    最近更新 更多