Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как на jquery сделать выборку элементов несодержащи в в себе определённые теги (https://javascript.ru/forum/jquery/35420-kak-na-jquery-sdelat-vyborku-ehlementov-nesoderzhashhi-v-v-sebe-opredeljonnye-tegi.html)

рони 10.02.2013 19:45

Как на 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>

danik.js 10.02.2013 20:13

<!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>

рони 10.02.2013 20:23

danik.js,
спасибо! воспользуюсь вашим вариантом, но ещё бы хотелось знать почему not(".content b") не работает, хотя вроде должен.

danik.js 10.02.2013 20:28

А почему должен?
(.content) отберет все div.content, далее мы фильтруем их, удаляя из выборки (.content b), то есть элементы b, являющиеся потомками .content ... Стоп, но ведь у нас в выборке и так нет никаких b

Похоже lava глючит ))

рони 10.02.2013 20:40

Deff,
Цитата:

Сообщение от danik.js
Стоп, но ведь у нас в выборке и так нет никаких b

согласен!
$(".content").not(".content:has(b)").addClass("activ");
так будет верней
Deff,
пока непонял ваш пример

Deff 10.02.2013 20:48

рони,
Неважно, уже , .not(".content:has(b)") делает без всяких переборов родителей

inx 10.02.2013 21:26

я исходил из логики, что та часть фильтра, которая не относиться к текущему элементу, будет работать как has

("foo").filter("> .bar"); // это * > .bar
// отдать элементы foo у которых есть хотя бы один прямой потомок с классом bar

danik.js 11.02.2013 05:06

$(".content").not(":has(b)").addClass("activ");
Так должно по идее работать


Часовой пояс GMT +3, время: 06:03.