Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   hasClass наоборот (https://javascript.ru/forum/jquery/20918-hasclass-naoborot.html)

Триви 22.08.2011 16:38

hasClass наоборот
 
Добрый день, коллеги.
Мне нужно записать в массив айдишники всех <LI>,
находящихся в <UL> c ID "navigation" и не имеющие класс "shadow".
Так как notHasClass я в доках не нашёл,
у меня получился вот такой вот изврат:

tabs_id_arr = new Array();
$("ul#navigation li").each(function (i) {
   if ($(this).attr("class") != "shadow") {
       tabs_id_arr[i]= $(this).attr("id");
   }
});


Однако, перфекционизм не даёт мне покоя)))
Хотелось бы видеть конструкцию что то типа:

tabs_id_arr=$("ul#navigation li").notHasClass("shadow").get();


пи.си. выбираемые элементы не имеют никакого класса!

Skipp 22.08.2011 16:43

1. ID должно быть уникально у каждого элемента.
2. .not(selector) Исключает из набора те элементы, которые соответствуют селектору.

B@rmaley.e><e 22.08.2011 16:47

http://api.jquery.com/filter/
http://api.jquery.com/not-selector/

Триви 22.08.2011 17:05

так
tabs_id_arr=$("ul#navigation li:not('.shadow')").get();
???

что то пролистать его потом не получается((

jQuery.each(tabs_id_arr, function(i) {
   alert(tabs_id_arr[i]);
});


Выводит [object HTMLLIElement]

kadabrik 23.08.2011 00:45

Цитата:

Сообщение от Триви (Сообщение 121780)
так
tabs_id_arr=$("ul#navigation li:not('.shadow')").get();
???

что то пролистать его потом не получается((

jQuery.each(tabs_id_arr, function(i) {
   alert(tabs_id_arr[i]);
});


Выводит [object HTMLLIElement]

tabs_id_arr.each(function(){console.log($(this))});

devote 23.08.2011 04:08

tabs_id_arr=$("ul#navigation li:not('.shadow')").get();

Либо я чет не вкуриваю, но не могу понять накой нужен метод get() вконце? И без него должно все пахать как часы.

walik 23.08.2011 10:06

Цитата:

Сообщение от Триви
Выводит [object HTMLLIElement]

А разве не так должно быть ?
Метод get() который вы используете
Цитата:

Сообщение от Триви
tabs_id_arr=$("ul#navigation li:not('.shadow')").get();

Возвращает DOM элемент а не JQuery объект.

devote 23.08.2011 14:18

Цитата:

Сообщение от walik
Возвращает DOM элемент а не JQuery объект.

Да значит я все же еще не глуп, а то сижу смотрю и думаю неужто get() стал возвращать просто jq объект... А не все же как положено =)

Триви 23.08.2011 17:34

Тупанул жестко))) сорри :agree:
jQuery.each(tabs_id_arr, function(i) {
      alert($(this).attr("id"));
});


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