1

也许这是我真正的深夜,但我无法弄清楚这一点。首先是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^=#]);

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

4

4 回答 4

1

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

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

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

否则,您可以执行以下操作:

$('div a[href^="#"]').val("This link starts with a #");
于 2008-11-19T02:13:49.787 回答
1

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

 var links = $('*[href^=#]', this); 
于 2008-11-19T02:41:00.073 回答
1

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

我建议你想要的是:

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

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

于 2008-11-19T03:23:20.830 回答
1

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

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

谢谢

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

于 2008-11-19T05:49:46.153 回答