jQuery未捕获异常:语法错误,无法识别的表达式 [tabindex="something"]

12

我们网站中的某些UI功能突然停止工作了,我收到了以下错误消息:

jQuery未捕获异常:语法错误,无法识别表达式[tabindex="something"]

这是我的代码:

var thumb_src = jQuery('a[name="thumb-image"] img[src*=' + sku + ']').attr('src');
jQuery( 'a[ tabindex=' + thumb_src + ']' ).prevAll().removeClass('selectedThumb');
jQuery( 'a[ tabindex=' + thumb_src + ']' ).addClass( 'selectedThumb' );
jQuery( 'a[ tabindex=' + thumb_src + ']' ).nextAll().removeClass('selectedThumb');

在将jQuery升级到最新版本之前,它一直正常工作,我相信这是原因。我在上面的语句中做了什么违法的事情吗?感谢任何有关此问题的输入或帮助!


我认为你应该使用a[tabindex=而不是a[ tabindex= - drudge
你是从哪些版本升级到现在的版本?我猜你正在使用在新版本中已经废弃的东西。 - WEFX
你为什么要将tabindex设置为非数字的值?此外,你尝试过删除这里的空格"a[t"吗? - jacobangel
此外,您可以在此处测试不同版本的jQuery框架-**链接**。 - WEFX
1
我删除了a[tabindex]之间的空格。同时将tabindex更改为title,但仍然出现相同的错误消息。还将代码的第一行中的.attr更改为.prop,但仍然出现相同的错误消息。 - IntricatePixels
@WEFX升级到1.6版本。 - IntricatePixels
2个回答

15

很可能你的thumb_src中的任何./字符都会破坏你最后三行代码中的属性选择器,因为它们是特殊的CSS字符。

尝试在这些选择器内使用双引号,以便它们被字面理解(即使你真的不应该使用除数字值外的任何东西来设置tabindex):

jQuery('a[tabindex="' + thumb_src + '"]')

API 文档 中指出在 jQuery 属性选择器中这些引号是必须的。


这正是事实。编码和编程已经超过5年,却仍然错过了像这样显而易见的东西!不过这也促使我将.attr()更新为.prop()!非常感谢! - IntricatePixels
没问题 - 我对大家谈论 .attr().prop() 感到困惑,尽管在升级到 1.6 版本时仍然需要进行这些必要的更改。我只是觉得这与你的错误无关。 - BoltClock
太棒了!我的问题是我试图从“thumb_scr”中减去1,结果出现了错误,所以我做的是$('[tabindex="'+(thumb_src - 1)+']")请注意,方括号将数学计算与字符串的其余部分分开。 - James Harrington

2
"

jQuery 1.6 版本起,attr() 函数已更改,请使用 prop() 替代:

"
var thumb_src = jQuery('a[name="thumb-image"] img[src*=' + sku + ']').prop('src');

请看这个问题


这在jQuery 1.6中有所改变,请阅读此处的发布说明:http://blog.jquery.com/2011/05/03/jquery-16-released/ - CamelCamelCamel
改成.prop()了,但还是出现同样的错误信息。我感觉它不喜欢[tabindex="这一部分,但不知道为什么。当前jQuery版本是1.6。 - IntricatePixels
嗯,我不确定。你能把你的代码部分(如果可能的话全部)发布到 jsfiddle 上吗? - Naftali
Neal是一个例子。当你悬停在图像缩略图上并且js在第920行时,错误会被触发。 - IntricatePixels
将JS中所有的.attr()更改为.prop()后,UI功能部分恢复正常,但仍然会抛出错误信息。 - IntricatePixels
2
这与.attr().prop()有什么关系? - BoltClock

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