jQuery: тонкая разница между .has () и: has ()

При использовании с дочерним селектором>два варианта jQuery "has" ведут себя по-разному.

Возьми этот HTML:

<div>
  <span>Text</span>
</div>

Сейчас:

$("div:has(>span)");

вернул бы его, пока:

$("div").has(">span");

не будет. Это баг или фича? Сравните здесь:http://jsfiddle.net/aC9dP/

РЕДАКТИРОВАТЬ: Это может быть ошибка или, по крайней мере, недокументированное противоречивое поведение.

Во всяком случае, я думаю, что было бы полезно иметь выбор ребенкапоследовательно работать как унарный оператор. Это позволяет вам делать то, что в противном случае потребовало бы пользовательской функции фильтра - это позволяет вам напрямую выбирать элементы, у которых есть определенные дочерние элементы:

$("ul:has(>li.active)").show();     // works
$("ul").has(">li.active)").show();  // doesn't work, but IMHO it should

в отличие от:

$("ul").filter(function () {
  return $(this).children("li.active").length > 0;
}).show();

Я открылабилет jQuery (7205) за это.

Ответы на вопрос(2)

Ваш ответ на вопрос