这个jQuery系列有什么作用?

时间:2012-02-25 17:21:39

标签: jquery

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

if ( $(this).parent().find(".a ..b") ) {
  alert("hi");
});

2 个答案:

答案 0 :(得分:8)

.a ..b是一个无效的选择器,它会抛出错误:

Uncaught Error: Syntax error, unrecognized expression: .

.a .b是正确的选择器。

因此$(this).parent().find(".a .b")将首先获取this的直接父节点,然后它将搜索具有class="a"的后代元素,然后搜索class="b"内的另一个后代元素如果它发现它将提醒hi

答案 1 :(得分:3)

这可能取决于浏览器。在Internet Explorer 9和Firefox 10.0中,选择器都不会找到任何内容,而是返回一个空的jQuery对象。

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

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

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