jQuery选择器用于具有href属性中含有#的链接
问题出现的原因是作者想要选择具有"# "的href属性的链接,但是他使用了错误的选择器,导致选择不到想要的元素。他使用了attribute-contains选择器,但是这个选择器是用来选择包含指定值的属性的元素,而不是以指定值开头的属性的元素。API中明确说明了被评估的值必须用引号括起来。
解决方法是使用attribute starts with选择器来选择以指定值开头的属性的元素。作者提供了一个示例代码来解决这个问题:
$('a[href^="#"]').click(function(){ alert('Works!'); });
这段代码使用了attribute starts with选择器,并绑定了一个点击事件,当满足选择器条件的链接被点击时,弹出一个提示框。还有一个jsfiddle链接,可以查看他提供的示例代码的效果。
然后,有人指出作者的代码中有一个小错误,即选择器中的"^"符号应该在等号之前。作者进行了修正,将选择器修改为$('a[href=^"#"]')
。
通过以上内容,我们可以整理出以下文章:
有人想要选择具有"# "的href属性的链接,但是他使用了错误的选择器,导致选择不到想要的元素。他使用了attribute-contains选择器,但是这个选择器是用来选择包含指定值的属性的元素,而不是以指定值开头的属性的元素。API中明确说明了被评估的值必须用引号括起来。
为了解决这个问题,他可以使用attribute starts with选择器来选择以指定值开头的属性的元素。他提供了以下示例代码来解决这个问题:
$('a[href^="#"]').click(function(){ alert('Works!'); });
这段代码使用了attribute starts with选择器,并绑定了一个点击事件,当满足选择器条件的链接被点击时,弹出一个提示框。他还提供了一个jsfiddle链接,可以查看他提供的示例代码的效果。
然后,有人指出他的代码中有一个小错误,即选择器中的"^"符号应该在等号之前。作者进行了修正,将选择器修改为$('a[href=^"#"]')
。
问题的出现原因是提问者想要选择带有特定属性的链接,这个属性是链接的href属性中包含'#'的。
解决方法是使用jQuery的属性选择器来选择具有特定属性的链接。在这种情况下,可以使用属性包含选择器(*=)或属性开始选择器(^=)来选择带有'#'的链接。
使用属性包含选择器可以选择任何href属性中包含指定字符串的链接。代码如下:
$("a[href*='#']").click(function() { alert('works'); });
使用属性开始选择器可以选择任何href属性以指定字符串开头的链接。代码如下:
$("a[href^='#']").click(function() { alert('works'); });
需要注意的是,提问者最初使用的是属性开始选择器,这正是他真正想要的。其他人可能没有理解他的问题,但是他最终找到了自己想要的解决方法。
在对问题进行进一步讨论时,提问者表示他的问题比看起来更复杂。然而,使用jQuery往往可以找到比预期更简单的解决方法。
最后,提问者对属性开始选择器表示感谢,并指出这正是他一直在寻找的解决方法。
问题的出现是因为选择器`$("a[href*=#]")`无法正确选择带有`#`字符的href属性的链接。这个选择器会选择所有包含`#`字符的href属性的链接,而不仅仅是``这种情况。
解决方法是使用`$("a[href*='#']")`选择器来确保只选择``这种情况的链接。通过在选择器中添加单引号,可以正确地选择带有`#`字符的href属性的链接。
在最新的jQuery版本中,选择器`$("a[href*=#]")`可能不起作用。需要使用`$("a[href*=\\#]")`进行转义来确保其可靠性。
这个的问题中还提到了使用带有开始属性选择器的方法,即`$("a[href^='#']")`。这种方法可以选择所有以`#`开头的href属性的链接。
总之,要选择带有`#`字符的href属性的链接,可以使用`$("a[href*='#']")`选择器,并且在某些情况下需要进行转义,或者使用开始属性选择器`$("a[href^='#']")`来选择以`#`开头的href属性的链接。