-1

我有一些代码从一开始就一直在工作,已经两个多月了。选择器具有动态内容,存储在变量 中newClasses。我的代码曾经是$("'" + newClasses + "'"),大约两天前,在我在页面上添加了单独的功能之后,没有影响此代码,也没有导入任何库或其他任何东西,我得到了错误

Uncaught Error: Syntax error, unrecognized expression: '.fs.btn.heading.abstract' code.jquery.com/jquery.min.js:2

经过一天的故障排除后,我发现如果我删除了"'" +and + "'",它变成$(newClasses)了 ,该功能又开始工作了。仅供参考:该变量在字符串的任一端newClasses均不包含s 。'

现在,我知道这是一个不同的问题,但是可以在单独的部分中添加哪些代码来影响功能,并导致我不得不删除单引号的连接?

备注 -

  • 我不是在寻找网页的代码帮助、更多故障排除方法和思考答案。
  • 由于代码量大,而且添加的代码不同,发布代码毫无意义,但您可以随意查看 Git 代码here
  • 我什至尝试恢复到之前的提交,但由于某种原因,它仍然有同样的错误。
  • 我从我的编程会话中推断出,当控制台在低级别行号(本例中为 2)上引用 JS 或 JQuery 时,它通常与琐碎;), 或}, 但 JSLint 没有显示出来特别异常。
  • 从那以后没有更改浏览器,但我确实重新启动了,并且可能有系统更新等待完成。

jQuery的API是否有可能改变?还有什么我没有想到的?感谢您对可能的罪魁祸首的建议。

4

3 回答 3

3

选择器只是一个字符串。如果您的变量已经是字符串类型,那么您不需要在每一端添加引号,这样做可能会导致错误,因为字符串的每一端都不应该有引号。所以,$(var)应该工作得很好。

引号用于声明字符串文字,例如:

"#test"

但如果您已经在变量中拥有数据,则不需要。因此,如果您有一个名为的变量sel已经包含 string #test,那么您可以这样做:

$(sel)

唯一可以在选择器字符串中添加引号的情况是,如果您需要将引号嵌入到字符串中间,例如这个选择器:

[data-myval='whatever']
于 2012-08-10T22:48:20.040 回答
2

我不知道你一开始用过$("'" + newClasses + "'")。为什么要'在字符串之前和之后添加?

这就像在做$("'.fs.btn.heading.abstract'")。我不明白你为什么会这样做。

在 jQuery 选择器中唯一需要引号的是当您使用属性选择器时,例如:$('input[id="test.input"]')

于 2012-08-10T22:48:42.673 回答
0

您不可能设法使该代码起作用,唯一可能的解释是在添加该功能之前从未执行过该代码。

它基本上在做的是:

var id= "#idname"; //#idname
var str = "'" + id + "'"; //'#idname'
$(str); //equivalent to $("'#idname'"); which is wrong

请记住,当您看到时"hello",字符串仅保留hello,引号不是字符串的一部分

于 2012-08-10T22:59:27.720 回答