Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
这个jQuery行是做什么的?_Jquery - Fatal编程技术网

这个jQuery行是做什么的?

这个jQuery行是做什么的?,jquery,Jquery,我有一行jQuery代码,它导致了一个错误,因为我在b类前面放置了两个句点。我想知道jQuery是如何解释下面这行的?如果b前面只有一个句点,而不是两个,我假设jQuery将其解释为:“如果b类存在于a类中,而a类存在于b的父类中,则发出警报提示hi” .a..b是无效的选择器,它将引发错误: Uncaught Error: Syntax error, unrecognized expression: . .a.b是正确的选择器 因此,$(this).parent().find(.a.b”)将

我有一行jQuery代码,它导致了一个错误,因为我在b类前面放置了两个句点。我想知道jQuery是如何解释下面这行的?如果b前面只有一个句点,而不是两个,我假设jQuery将其解释为:“如果b类存在于a类中,而a类存在于b的父类中,则发出警报提示hi”


.a..b
是无效的选择器,它将引发错误:

Uncaught Error: Syntax error, unrecognized expression: .
.a.b
是正确的选择器


因此,
$(this).parent().find(.a.b”)
将首先获取
this
的直接父节点,然后用
class=“a”
搜索子元素,然后用
class=“b”
搜索其中的另一个子元素,如果发现,它将发出警报,提示可能取决于浏览器。在InternetExplorer9和Firefox10.0中,选择器将什么也找不到,然后返回一个空的jQuery对象

当您使用jQuery对象作为
if
中的条件时,
if
中的代码将始终运行。jQuery对象始终是非falsy值,因此无论jQuery是否从选择器中找到任何内容,该条件都将始终被计算为
true

如果要检查是否找到了内容,请使用
length
属性:

if ( $(this).parent().find(selector).length ) {

你为什么要用两个句号?这是我的一个输入错误,但代码似乎可以工作,尽管有错误。我只是想纠正一下。在你的问题中,你说你自己明确地说了:
我在b类前面加了两个句号,是的,但那是一个拼写错误。但我解决了这个问题:)这意味着if语句中的任何内容都不会因为错误而执行?@icu222很多,是的,由于错误,javascript解释器只是停止执行您的脚本。@DarinDimitrov实际上,不是所有的脚本。当一个
抛出时,随后的
仍然正常执行。它在Google Chrome上抛出。重要的是,这是一个错误且不受支持的选择器,正如我们所看到的,它在浏览器之间的行为不同,因此如果您关心站点的跨浏览器兼容性,就不应该使用它。哦,我没想到它会返回真值。非常感谢。这实际上帮助我调试了更多:)
if ( $(this).parent().find(selector).length ) {