$("'" + foo + "'") vs $(foo)
$("'" + foo + "'") vs $(foo)
我有一些代码从一开始就一直在工作,已经两个多月了。 选择器具有动态内容,存储在变量newClasses
中。 我的代码曾经是$("'" + newClasses + "'")
的,大约两天前,在页面上添加了单独的功能后,不影响此代码,也没有导入任何库或其他任何东西,我得到了错误
Uncaught Error: Syntax error, unrecognized expression: '.fs.btn.heading.abstract' code.jquery.com/jquery.min.js:2
经过一天的故障排除,我发现如果我删除"'" +
并+ "'"
,并且它变得$(newClasses)
,该功能又开始工作了。 仅供参考:变量newClasses
不包括字符串两端的'
。
现在,我知道这是一个不同的问题,但是可以在单独的部分中添加哪些代码来影响功能,并导致我不得不删除单引号的串联?
笔记-
- 我不是在为网页寻找代码帮助、更多的故障排除方法和思考答案。
- 由于代码量大,以及添加的不同代码,发布代码毫无意义,但您可以随意在此处查看 Git 代码
- 我什至尝试恢复到以前的提交,由于某种原因,它仍然有相同的错误。
- 我从编程会话中推断,当控制台在低级行号(在本例中为 2)上引用 JS 或 JQuery 时,它通常与琐碎的
;
、)
或}
有关,但 JSLint 没有显示该特定异常。 - 从那时起没有浏览器更改,但我确实重新启动了,并且可能等待完成系统更新。
jQuery的API有没有可能改变?还有什么我没有想到的? 感谢您对可能的罪魁祸首的建议。
选择器只是一个字符串。 如果您的变量已经是字符串类型,那么您不需要在每一端添加引号,这样做可能会导致错误,因为字符串的每一端都不应该有引号。 所以,$(var)
应该工作得很好。
引号用于声明字符串文字,如下所示:
"#test"
但如果变量中已有数据,则不需要。 因此,如果您有一个名为 sel
的变量,该变量已经包含字符串 #test
,那么您可以执行以下操作:
$(sel)
只有在选择器字符串中添加引号时,如果需要将引号嵌入到字符串的中间,例如以下选择器:
[data-myval='whatever']
我不知道你一开始就用过$("'" + newClasses + "'")
。 为什么要在字符串前后添加'
?
这就像做$("'.fs.btn.heading.abstract'")
. 我不明白你为什么会这样做。
jQuery选择器中唯一需要引号的时间是当你使用属性选择器时,例如:$('input[id="test.input"]')
。
您不可能设法使该代码正常工作,唯一可能的解释是,在添加该函数之前从未执行过该代码。
它基本上做的是:
var id= "#idname"; //#idname
var str = "'" + id + "'"; //'#idname'
$(str); //equivalent to $("'#idname'"); which is wrong
请记住,当你看到"hello"
时,字符串只保存hello
,引号不是字符串的一部分
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- JavaScript美学:;函数foo(){}"vs“;var foo=函数(){}"AMD功能
- jQuery"return{foo:bar,foo2:bar2}"-它是什么
- <a href="javascript:foo(this)">通过Window,我想要标记
- 在整个html文档中搜索精确的代码""<br>foo<br>"并将其