如何为“(this)属性以#开头的属性选择”

时间:2008-11-19 01:55:34

标签: jquery syntax css-selectors

也许这是我真正的深夜,但我无法想象这一个。首先是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 个答案:

答案 0 :(得分:1)

我对你正在追求的东西感到有点困惑......

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

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

否则你可以这样做:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

我猜你要提取的是链接上href属性的内容,你已经知道了带链接的容器。

我建议你想要的是:

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

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

答案 3 :(得分:1)

对不起伙计们 - 就像我说我从深夜起就处于阴霾之中。 简单的答案是在我尝试建立变量之前将[href ^ =#]移动到选择器。这是我的错,因为我试图在变量内部而不是在选择器上进行过滤,因此将其修改得很多,而且我的思绪混乱了...... 谢谢你,如果没有阅读你的(正确的)混淆回复,我就无法做到。以下是我通常会在更多的睡眠中解决的问题:

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

由于

PS。我一直在努力解决今天的另一个问题,我正在考虑发布它,但在此之后,我想我会回家睡觉,早上想想它:D