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) за это.