Как на jquery сделать выборку элементов несодержащи в в себе определённые теги
почему нельзя выбрать элементы в которых нет <b>
этот код в jquery неработает
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<style type="text/css">
.activ{
background-color: #00FFFF;
}
</style>
</head>
<body>
<div class="content" ><b>bbbbb</b>
</div>
<div class="content" >test
</div>
<div class="content" ><b>bbbbb</b>
</div>
<div class="content" >test
</div>
<div class="content" ><b>bbbbb</b>
</div>
<div class="content" >test
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script language="JavaScript" type="text/javascript">
$(".content").not(".content b").addClass("activ");
</script>
</body>
</html>
зато прекрасно работает на lava Небольшая библиотека в стиле jQuery
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<style type="text/css">
.activ{
background-color: #00FFFF;
}
</style>
</head>
<body>
<div class="content" ><b>bbbbb</b>
</div>
<div class="content" >test
</div>
<div class="content" ><b>bbbbb</b>
</div>
<div class="content" >test
</div>
<div class="content" ><b>bbbbb</b>
</div>
<div class="content" >test
</div>
<script language="JavaScript" src="http://z.illogical.ru/lava.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
lava(".content").not(".content b").addClass("activ");
</script>
</body>
</html>
|
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<style type="text/css">
.activ{
background-color: #00FFFF;
}
</style>
</head>
<body>
<div class="content" ><b>bbbbb</b>
</div>
<div class="content" >test
</div>
<div class="content" ><b>bbbbb</b>
</div>
<div class="content" >test
</div>
<div class="content" ><b>bbbbb</b>
</div>
<div class="content" >test
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script language="JavaScript" type="text/javascript">
$(".content:not(:has(b))").addClass("activ");
</script>
</body>
</html>
|
danik.js,
спасибо! воспользуюсь вашим вариантом, но ещё бы хотелось знать почему not(".content b") не работает, хотя вроде должен. |
А почему должен?
(.content) отберет все div.content, далее мы фильтруем их, удаляя из выборки (.content b), то есть элементы b, являющиеся потомками .content ... Стоп, но ведь у нас в выборке и так нет никаких b Похоже lava глючит )) |
Deff,
Цитата:
$(".content").not(".content:has(b)").addClass("activ");
так будет верней Deff, пока непонял ваш пример |
рони,
Неважно, уже , .not(".content:has(b)") делает без всяких переборов родителей |
я исходил из логики, что та часть фильтра, которая не относиться к текущему элементу, будет работать как has
("foo").filter("> .bar"); // это * > .bar // отдать элементы foo у которых есть хотя бы один прямой потомок с классом bar |
$(".content").not(":has(b)").addClass("activ");
Так должно по идее работать |
| Часовой пояс GMT +3, время: 09:47. |