Улучшенная производительность переключения ajax для флажка attr с выбранным изменением - PullRequest
0 голосов
/ 03 февраля 2010

Я создаю простую систему сообщений с почтовыми ящиками, такими как пользовательский интерфейс.У меня есть поле выбора, которое будет контролировать список флажок один для каждого сообщения.Он работает нормально, но мне нужно с меньшим количеством строк кода.

вот мой код:

jQuery("#select_deselect").change(function(){
  switch (jQuery(this).val()){
   case 'unread':
    jQuery("input[class=new_message]").each(function(){
     jQuery(this).attr("checked", "checked");
    });
    jQuery("input[class=message]").each(function(){
     jQuery(this).removeAttr("checked");
    });
   break;
   case 'read':
    jQuery("input[class=message]").each(function(){
     jQuery(this).attr("checked", "checked");
    });
    jQuery("input[class=new_message]").each(function(){
     jQuery(this).removeAttr("checked");
    });
   break;
   case 'all':
    jQuery("input[class=new_message]").each(function(){
     jQuery(this).attr("checked", "checked");
    });
    jQuery("input[class=message]").each(function(){
     jQuery(this).attr("checked", "checked");
    });
   break;
   case 'none':
     jQuery("input[class=new_message]").each(function(){
     jQuery(this).removeAttr("checked");
    });
    jQuery("input[class=message]").each(function(){
     jQuery(this).removeAttr("checked");
    });
   break;
   default:
    jQuery("input[class=new_message]").each(function(){
     jQuery(this).removeAttr("checked");
    });
    jQuery("input[class=message]").each(function(){
     jQuery(this).removeAttr("checked");
    });
   }
 });

select_deselect - это идентификатор моего окна выбора с параметрами (null, all, read, unread,none).

new_message - это класс, предназначенный для непрочитанных сообщений

message - это класс, предназначенный для чтения сообщений

Я думаю, что toggle () может это сделать, но это будетте же строки.

Любая идея, чтобы получить это просто как возможно

Ответы [ 2 ]

2 голосов
/ 03 февраля 2010

Нет необходимости зацикливать каждый из элементов после их выбора, вы можете просто вызвать ваши .attr () или .removeAttr () для него.

jQuery("#select_deselect").change(function(){
    var newmessage = jQuery("input[class=new_message]");
    var message = jQuery("input[class=message]");
    switch (jQuery(this).val()){
        case 'unread':
            newmessage.attr("checked", "checked");
            message.removeAttr("checked");
        break;
        case 'read':
            message.attr("checked", "checked");
            newmessage.removeAttr("checked");
        break;
        case 'all':
            newmessage.attr("checked", "checked");
            message.attr("checked", "checked");
        break;
        case 'none':
        default:
            newmessage.removeAttr("checked");
            message.removeAttr("checked");
    }
});
0 голосов
/ 03 февраля 2010
jQuery("#select_deselect").change(function(){
  switch (jQuery(this).val()){
   case 'unread':
    jQuery("input[class=new_message]").attr("checked", "checked");
    jQuery("input[class=message]").removeAttr("checked");
   break;
   case 'read':
    jQuery("input[class=message]").attr("checked", "checked");
    jQuery("input[class=new_message]").removeAttr("checked");
   break;
   case 'all':
    jQuery("input[class=message],input[class=new_message]").attr("checked", "checked");
   break;
   case 'none':
   default:
     jQuery("input[class=message],input[class=new_message]").removeAttr("checked");
   break;
   }
 });

Я упростил вышеупомянутое, удалив лишний каждый и объединив селекторы для всех и ни одного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...