Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $(““+foo+”)对$(foo)_Javascript_Jquery_Html - Fatal编程技术网

Javascript $(““+foo+”)对$(foo)

Javascript $(““+foo+”)对$(foo),javascript,jquery,html,Javascript,Jquery,Html,我有一些代码,从一开始就一直在工作,两个多月了。选择器具有动态内容,存储在变量newClasses中。我的代码以前是$'+newClasses+',大约两天前,在我在页面上添加了单独的功能后,没有影响此代码,也没有导入任何库或任何其他内容,我得到了以下错误 未捕获错误:语法错误,无法识别的表达式:'.fs.btn.heading.abstract'code.jquery.com/jquery.min.js:2 经过一天的故障排除,我发现如果我删除了“+和+”,并将其变成$newClasses,那

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

未捕获错误:语法错误,无法识别的表达式:'.fs.btn.heading.abstract'code.jquery.com/jquery.min.js:2

经过一天的故障排除,我发现如果我删除了“+和+”,并将其变成$newClasses,那么该功能将重新开始工作。仅供参考:变量newClasses在字符串的两端都不包含

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

注-

我不是在寻找网页的代码帮助,更多的疑难解答方法和思考答案。 由于代码量很大,并且添加了不同的代码,发布代码是没有意义的,但是您可以随意查看Git代码 我甚至尝试恢复到以前的提交,但出于某种原因,它仍然有相同的错误。 我从我的编程会话中推断,在这种情况下,当控制台在低级行2上引用JS或JQuery时,它通常与一个琐碎的问题有关;,或者},但是JSLint没有显示出这种特殊的异常。 从那以后,浏览器没有改变,但我确实重新启动了,而且可能还有系统更新等待完成。
jQuery的API是否可能发生了变化?还有什么我没想到的?感谢您对可能的罪犯提出的建议。

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

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

"#test"
但如果变量中已有数据,则不需要。因此,如果您有一个名为sel的变量,它已经包含字符串测试,那么您只需执行以下操作:

$(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,引号不是字符串的一部分

为什么要在字符串中添加单引号?选择器看起来像:$foo.bar,您创建了$'foo.bar'。那完全是无效的。如果它起作用,那就是一个bug。如果属性选择器的值包含特殊字符,则只需要使用引号,例如:$.foo[bar='some value']。jQuery选择器不需要在查询周围加撇号。如果它过去允许这样做,那么它做了一些奇怪/错误的事情。你最近有没有更换过浏览器?当然你添加了引号。“+foo+'与'+some value'相同+'与'some value'相同。引号只是分隔字符串文字,它们不是字符串本身的一部分。大多数情况下,可以用变量替换文本,例如:$'.foo'与var bar='.foo'相同$酒吧关于分隔符还有一件事:不仅字符串文字有分隔符foo或'foo',,还有regex文字/foo/、the/、数组文字[42]、[和]和对象文字{foo:42}、{and}。这些分隔符有助于解析器正确处理源代码,但它们从来都不是实际值的一部分。因此,当解析器看到一个引号时,它知道,啊,直到下一个匹配引号的字符形成一个字符串。但是通过字符串连接,您实际上使它们成为字符串的一部分,即值本身。@ajax333221:谢谢:-已修复。