Селектор флажка jQuery с несколькими атрибутами - PullRequest
1 голос
/ 29 января 2011

У меня есть селектор jQuery, который не работает, несмотря на все мои усилия по его исправлению.Любой совет?

            $(':checkbox:(not(:checked))[name=this.name][value="Done"]').attr({
                checked: 'checked',
                disabled: 'disabled'
            });

Следует установить и снять флажок, если он еще не установлен, имеет атрибут name = this.name и значение Done.

Я возилсявокруг с этим http://jsfiddle.net/PottyMonster/s8RMJ/ Я не знаю, будет ли это работать, хотя.

Ответы [ 2 ]

1 голос
/ 29 января 2011

Это должно сделать это:

$('input[name=' + this.name + '][value=Done][type=checkbox]:not(:checked)').attr({
    checked: 'checked',
    disabled: 'disabled'
});

Обновленный пример: http://jsfiddle.net/s8RMJ/22/

Вам необходимо объединить значение this.name в селекторе.

Я также добавил input к селектору, чтобы сделать его быстрее.

Кроме того, у вас было дополнительное () вокруг :not(), так что это выглядело как :(not()), который недействительный.


РЕДАКТИРОВАТЬ:

Просто хотел отметить, что я заменил селектор :checkbox на [type=checkbox], чтобы сделать ваш селектор действительнымquerySelectorAll.

Теперь он получит значительное повышение производительности в браузерах, которые поддерживают qsa.

0 голосов
/ 29 января 2011

изменить [name=this.name] на [name="'+this.name+'"]
и :checkbox до [type="checkbox"]
http://jsfiddle.net/s8RMJ/24/

...