检查所点击链接的href是否不以井号开头。

7
这是我如何选择所有链接的href不以#开头的方法:
$('a:not([href^="#"])')

但是我如何确定链接是否具有以井号开头的 href 属性,它被点击后?以下代码无法实现该功能:
$('a').on('click', function() {
   if($(this).is('[href^="#"])')) {
     alert('No hash');
   }
});
4个回答

8

您从选择器中移除了:not()。请重新添加并它应该能够正常工作。

if($(this).is('a:not([href^="#"])')) {

演示: http://jsfiddle.net/8An48/


或者更好的方式是...

if (this.getAttribute("href").charAt(0) !== "#") {

演示: http://jsfiddle.net/8An48/1/


或者从包含所有目标元素的最近祖先处使用事件委托。

$('body').on('click', 'a:not([href^="#"])', function() {
     alert('No hash');
});

演示: http://jsfiddle.net/8An48/2/


0

尝试:

$('a').on('click', function() {
   if(($(this).attr('href').substr(0,1)) != '#') {
     alert('No hash');
   }
});

0
$('a').on('click', function() {
   if($(this).attr("href").indexOf("#") === -1) {
     alert('No hash');
   }
});

解释

$(this).attr("href") - 获取被点击链接的 href 属性值

.indexOf("#") - 如果字符串 A 包含字符串 B,则返回字符串 B 的位置。否则返回 false。

=== -1 - 三个等号和 -1 确保这是 100% 的 false(而不是等于一个字符串或数字)


0
你可以使用 .filter()
$('a').filter(function(){
  return this.href.slice(0, 1) !== '#';
}).addClass('does-not-start-with-hash');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接