文章内容

2017/3/19 10:10:18,作 者: 黄兵

Syntax error, unrecognized expression: a[href*=#]

今天在写Javascript代码的时候,报错。提示和截图如下:

Uncaught Error: Syntax error, unrecognized expression: a[href*=#]

在版本为jquery 2.1.3版本上运行无问题,在jquery 3.1版本报错(Uncaught Error: Syntax error, unrecognized expression: a[href*=#],之后查阅相关资料之后原来是这个选择表达式有问题。

修改代码如下:

$('a[href*="#"]').click(function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var $target = $(this.hash);
$target = $target.length && $target || $('[name=' + this.hash.slice(1) + ']');
if ($target.length) {
var targetOffset = $target.offset().top;
$('html,body').animate({
scrollTop: targetOffset
},
1000);
return false;
}
}
});

之后运行没有报错。这个主要用到jquery 的属性选择过滤器。

属性过滤选择器实例:

$("[attribute*='value']")
选择指定属性具有包含一个给定的子字符串的元素。(选择给定的属性是以包含某些值的元素)
attribute: 一个属性名
value: 一个属性值,可以是一个不带引号的一个单词,或一个带引号的字符串。

$(function(){
$('input[name*="man"]').css("border","2px solid red");
//查找所有 input 的 name 属性中带有 'man' 的元素,并添加边框
});


改变属性title值含有“en”的<div>元素的背景色:

$('div[title*="en"]').css("background","#cccccc")
分享到:

发表评论

评论列表