【问题标题】:How to do an attribute selection for "(this) attribute starting with a #"如何为“以#开头的(此)属性”进行属性选择
【发布时间】:2010-09-22 23:34:02
【问题描述】:

也许这是我真正度过的深夜,但我无法弄清楚这一点。首先是html:

<div>
<a href="#internal">Internal Link</a>
<a href="http://external.com">External Link</a>
<a href="#internal2">Internal Link2</a>
</div>

为了在页面上做某事而不是转到链接,我需要根据它是否在开头包含 # 来过滤它。这是 [attribute^=value] 解决方案的完美问题,但这不起作用...

var link = $(this[href^=#]);

我只知道如何将 this 和属性限定符放在一起是一个问题……我不知道在 .val() 之后该放什么?!

【问题讨论】:

    标签: jquery syntax css-selectors


    【解决方案1】:

    我对你到底在追求什么有点困惑......

    如果你想测试当前对象是否在其 href 属性的开头有一个 #:

    var link = $(this);
    if (link.is("[href^='#']") ...
    

    否则你可以这样做:

    $('div a[href^="#"]').val("This link starts with a #");
    

    【讨论】:

      【解决方案2】:

      //使用以下内容,您正在搜索在“this”中具有以“#”开头的 href 标记的所有子项

       var links = $('*[href^=#]', this); 
      

      【讨论】:

        【解决方案3】:

        我猜您要提取的是链接上 href 属性的内容,并且您已经知道带有链接的容器。

        我建议你想要的是:

        var link = $('a[href^=#]',this).attr('href');
        

        这应该在您的示例中返回数组 [ '#internal', '#internal2' ]。如果这不是您想要的,您可能希望在查询后显示您期望 link 的样子。

        【讨论】:

          【解决方案4】:

          对不起,伙计们——就像我说的,我从深夜开始就处于阴霾之中。 简单的答案是在我尝试建立变量之前将 [href^=#] 移动到选择器。这是我的错将它修剪得太多,而我试图在变量内部而不是在选择器上进行过滤是我的错... 不过谢谢你,如果不阅读你的(正确的)困惑的答复,我就无法做到。以下是我通常会通过更多的睡眠来锻炼自己:

          $("div a[href^=#]").click(function() {
            var link = $(this).attr("href");
            ...
          

          谢谢

          ps。我今天整天都在尝试解决另一个问题,我正在考虑发布它,但在此之后我想我会回家,睡觉,早上想一想:D

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-09-24
            • 2013-11-15
            • 2020-06-23
            • 1970-01-01
            • 1970-01-01
            • 2016-12-07
            相关资源
            最近更新 更多