Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > несколько чекбоксов


Автор: Areostar 5.6.2013, 14:45
в диве имеется несколько чекбоксов. мне надо их обойти и проверить.

Код

var inputList = $('#sector1 input[type="checkbox"]'), dataObj = {};
            $.each(inputList , function(key,item){
                 alert("!!!!");
            })


не работает. что делать?

Автор: Arantir 5.6.2013, 14:51
Цитата(Areostar @  5.6.2013,  13:45 Найти цитируемый пост)
что делать? 

Читать.
Цитата

The $.each() function is not the same as $(selector).each(), which is used to iterate, exclusively, over a jQuery object. 
http://api.jquery.com/jQuery.each/

Автор: Areostar 5.6.2013, 15:04
но с текстовыми полями данный пример работал

Автор: Arantir 5.6.2013, 15:12
Раз на раз не приходится. 
$ может возвращать различные объекты и не всегда они сводятся к коллекции, только с которой и умеет работать $.each.

Зачем вы так извращаетесь? Если вам нужно отдельно иметь  jQuery объект с чекбоксами, то почему не сделать вот так
Код

var inputList = $('#sector1 input[type="checkbox"]'), dataObj = {};
inputList.each(function(key,item){
     alert("!!!!");
});
?
Зато наверняка.

Добавлено через 3 минуты и 50 секунд
Теоретически Ваш код тоже должен бы работать. На странице точно есть элемент, соответствующий селектору? Может опечатка где в id или атрибуте...

Автор: Areostar 5.6.2013, 17:07
вроде собираю коллекцию 
Код

var inputList = $('#sector1 input[type="checkbox"]'), dataObj = {};

Алерт показыувет что там какойто обьект!

Но вот как перебрать полученное
в цикл даже не заходит
:
Код

inputList.each(function(key, item){
            alert($(item));
    });
         

как далше быть?

Автор: Arantir 5.6.2013, 17:53
Цитата(Areostar @  5.6.2013,  16:07 Найти цитируемый пост)
Алерт показыувет что там какойто обьект!

Ну, вообще-то, там будет объект даже при отсутствии элементов по данному селектору.
Код

alert($('[type="blabla"]')); // [object Object]
Это jQuery object, он не обязан содержать DOM-элементы. В вышеописанном примере он выглядит примерно так:
Код
{length:0, prevObject:{0:({}), context:({}), length:1}, context:({}), selector:"[type=\"blabla\"]"}


Цитата(Areostar @  5.6.2013,  16:07 Найти цитируемый пост)
в цикл даже не заходит

Значит в момент выполнения кода на странице не было ни одного input с type=checkbox внутри элемента с id=sector1.
Так то все должно работать: http://jsfiddle.net/uKCr4/

Попробуйте запускать скрипт после загрузки страницы (как по ссылке выше). Убедитесь, что нету другого элемента с id=sector1, id должны быть уникальны.

Автор: DEER 5.6.2013, 18:47
Код

$('#sector1').find('input[type="checkbox"]').each(function() { alert($(this)) });

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)