Javascript 检查单击的链接href是否以哈希标记开头

Javascript 检查单击的链接href是否以哈希标记开头,javascript,jquery,Javascript,Jquery,这就是我如何选择其href不以a开头的所有链接的方法: 但是,我如何确定链接在单击后是否有以哈希标记开头的href?这失败了: $('a').on('click', function() { if($(this).is('[href^="#"])')) { alert('No hash'); } }); 您已从选择器中删除:not。把它放回去,它应该会工作的 if($(this).is('a:not([href^="#"])')) { 演示: 或者更好 if (this

这就是我如何选择其href不以a开头的所有链接的方法:

但是,我如何确定链接在单击后是否有以哈希标记开头的href?这失败了:

$('a').on('click', function() {
   if($(this).is('[href^="#"])')) {
     alert('No hash');
   }
});
您已从选择器中删除:not。把它放回去,它应该会工作的

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

或者更好

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

或者使用来自最近祖先的事件委派,该祖先包含所有目标a元素

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

尝试:

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

$this.attrref-获取所单击链接的href属性的值

.indexOf-如果字符串A包含字符串B,则返回该位置。否则返回false

=-1-三元组等于和-1确保这是100%错误,并且不等于可以使用的字符串或数字。筛选器

$('a').on('click', function() {
   if(($(this).attr('href').substr(0,1)) != '#') {
     alert('No hash');
   }
});
$('a').on('click', function() {
   if($(this).attr("href").indexOf("#") === -1) {
     alert('No hash');
   }
});
$('a').filter(function(){
  return this.href.slice(0, 1) !== '#';
}).addClass('does-not-start-with-hash');