Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   правильность кода (https://javascript.ru/forum/misc/38965-pravilnost-koda.html)

prizrak39 10.06.2013 20:26

правильность кода
 
Здравствуйте. Прошу оценить небольшой кусочек кода. Возможно я не правильно его организовал или реализовать функции более сложными способами.
$(document).ready(function() {
   
   var idDriver = 1;
   $('#modalAddDriver').hide();
   
   $('#addDriver').click(function(){
       //обработчик кнопки Добавить, вызываем окно, содержащее
       //форму для добавления нового водителя
      $('#addNewDriver').html('Добавить'); 
   });
   
   $('#editDriver').click(function(){
       /* Обработчик нажатия кнопки Редактировать
        * При нажатии происходит посик первого выбранного checkbox в таблице
        * данными из этой строки заполняются поля формы добавления нового водителя
        */
       var ch = []; 
       var i;
       var $par1;
       $('#tableDriver input[type=checkbox]:checked').each(function() {                    
          ch[i] = this.name;
          var par = $(this).parent();
          $par1 = $(par).parent();          
          i = i + 1;
       });
       //выбираем данные из найденой строки
       $td = $par1.find('td');
       idDriver = $td[0].innerHTML;
       $('#name').val($td[1].innerHTML);
       $('#fam').val($td[2].innerHTML);
       $('#tele').val($td[3].innerHTML);
       $('#age').val($td[4].innerHTML);
       $('#status').val($td[5].innerHTML);       
       $('#model').val($td[6].innerHTML);
       $('#addNewDriver').html('Редактировать');       
       $('#modalAddDriver').show();
   });
   
   $('#delDriver').click(function() {
       var ch = [];
       var i = 0;
       $('#tableDriver input[type=checkbox]:checked').each(function() {                    
          ch[i] = this.name;
          i = i + 1;
       });      
      $.post('ajax/delDriver.php', {check:ch});
      location.reload();
   });
   
   $('#addNewDriver').click(function(){       
       //обработчик нажатия кнопки на форме добавления информации о новом водителе
       if ($('#addNewDriver').html() == 'Добавить') {
          $.post('ajax/addDriver.php', {name: $('#name').val(), famili: $('#fam').val(), 
              tele: $('#tele').val(), age: $('#age').val(), state: $('#status').val(),
              model: $('#model').val()});
      }
      else {
          $.post('ajax/addDriver.php', {id: idDriver, name: $('#name').val(), famili: $('#fam').val(), 
              tele: $('#tele').val(), age: $('#age').val(), state: $('#status').val(),
              model: $('#model').val()});
      }       
   });
});

Так есть небольшой вопрос. На странице есть таблица с checkbox-ми и когда я нажимаю на кнопку редактировать у меня выполняется следующий код:
$('#tableDriver input[type=checkbox]:checked').each(function() {                    
          ch[i] = this.name;
          var par = $(this).parent();
          $par1 = $(par).parent();          
          i = i + 1;
       });

Он пробегает по всем выделенным check, а мне хотелось бы, чтобы он находил первый выделенный и останавливал перебор.

danik.js 10.06.2013 20:36

var $input = $('#tableDriver input[type=checkbox]:checked:first');
var $row = $input.parents('tr');

danik.js 10.06.2013 20:40

Для получения из коллекции массива с нужными свойствами используй
var names = $.map($('input'), function(item){ return item.name }); // ['name1', 'name2', ... ]

prizrak39 10.06.2013 20:42

Про коллекции можете немного подробнее сказать?


Часовой пояс GMT +3, время: 06:48.