Как на 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, время: 06:03. |