jQuery, селекторы

iSlayter

Новичок
jQuery, селекторы

Задача: убрать выделение со всех отмеченных чекбоксов с именем category_type[]

С помощью jQuery пытаюсь сделать так:
PHP:
$('input[@name=category_type[]][@checked]').attr("checked", false);
Никаих JS ошибок в firebug'е не наблюдается, выделение не снимается.

Без jQuery пытаюсь так:
PHP:
document.getElementsByName('paymentTypes[]').checked = false;
Никаких JS ошибок в firebug'е не наблюдается, выделение не снимается, возвращается false.

w t f?
 

Wicked

Новичок
document.getElementsByName('paymentTypes[]').checked
у меня есть сомнения, что
1) чекбоксы находятся таким способом.
2) сказав .checked = false коллекции dom-элементов, ты говоришь это им всем одновременно.
 

MiRacLe

просто Чудо
jQuery(':checked').filter(function(idx){
return (this.name == 'category_type[]');
}).attr('checked',false);
 

iSlayter

Новичок
Wicked, спасибо!
1) эм... глупый вопрос, но всё же, а как в этом убедиться?
2) я уже отчаялся с этими чекбоксами, уж пусть ко всем хотя бы применится :(

// OMG! только читая этот пост заметил что в js коде для jQuery писал в имени category_type[] а не paymentTypes[] :)

MiRacLe, спасибо!
Предложенный Вами вариант довольно сложен для понимания без мануала или бегло ознакомившись с ним. После того как я исправил свою строку исполняемую jQuery и попытался исполнить Ваш вариант и свой вариант через коммандную строку в FireBug'e результат получился таким:

PHP:
>>> $('input[@name=paymentTypes[]][@checked]').attr("checked", false);
Object length=0 prevObject=Object jquery=1.2.3
>>> jQuery(':checked').filter(function(idx){ return (this.name == 'paymentTypes[]');}).attr('checked',false);
Object length=2
С Вашим вариантом выделение пропало. Почему мой не работает - не понятно :eek: упорно не видит ничего :mad:

-~{}~ 27.06.08 03:11:

Вообщем-то, при помощи моего любимого метода научно технического тыка было установлено, что при работе с указателями jQuery т.о. как пытался я нельзя использовать в имени элементов символы [].

PHP:
>>> $('input[@name=paymentTypes][@checked]').attr("checked", false);
Object length=2
-~{}~ 27.06.08 03:40:

Заработало после того как я к каждому чекбоксу нужному добавил аттрибут myattr со значением test:
PHP:
$('input[@myattr=test][@checked]').attr("checked", false);
-~{}~ 27.06.08 04:10:

написал John Resig'у, посмотрим что скажет... если скажет :)
 

Alexandre

PHPПенсионер
я бы чекбоксы выделил в отдельный класс и делал доступ к элементам через класс

-~{}~ 27.06.08 10:32:

что при работе с указателями jQuery т.о. как пытался я нельзя использовать в имени элементов символы [].
ну - ежу понятно, работает только с именами (идентификаторами), там же свой парсинг, требуется доработка
 

zuzmic

Новичок
$('input[name="category_type[]"]:checked').each(function () {
this.checked = false;
});

вроде так должно работать
 
Сверху