Есть ли способ оптимизировать следующий флажок выбрать / снять код - PullRequest
0 голосов
/ 20 мая 2011

У меня есть таблица флажков.Когда я щелкаю по элементу div с текстом «Выбрать все», он должен выбрать все чекбоксы, и текст элемента должен измениться на «Отменить выбор всех» независимо от того, установлен флажок или нет, и наоборот.

Я написалниже, это работает нормально, есть ли лучший способ сделать это?

   if($(this).text() == "Select All") {
        $(this).text("Unselect All");
        $.each($(".classname"),function(i ,ll){
           $(this).attr('checked', true);
        });
    }else{
        $(this).text("Select All");
        $.each($(".classname"),function(i ,ll){
          $(this).attr('checked', false);
        });
    }

спасибо.

Ответы [ 2 ]

4 голосов
/ 20 мая 2011

Я предполагаю, classname - класс соответствующих флажков.Вы можете попробовать:

if($(this).text().trim() == "Select All") {
    $(this).text("Unselect All");
    $(".classname").attr('checked', true);
}else{
    $(this).text("Select All");
    $(".classname").attr('checked', false);
}
3 голосов
/ 20 мая 2011

Прежде всего, $() - это вызов функции, поэтому вы должны сказать var $this = $(this), если собираетесь использовать $(this) много. Кроме того, ваши циклы $.each являются избыточными, поскольку объекты jQuery в любом случае применяют свои изменения ко всем сопоставляемым элементам, поэтому циклирование не требуется (т. Е. Методы jQuery устанавливаются на основе). Возможно, вам лучше удалить атрибут checked, чем устанавливать его также на false. Что-то вроде этого, вероятно, будет лучше:

var $this = $(this);
if($this.text() == 'Select All') {
    $this.text('Unselect All');
    $('.classname').attr('checked', true);
}
else {
    $this.text('Select All');
    $('.classname').removeAttr('checked');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...