отключить/включить динамически добавляемое поле ввода с помощью jQuery

проблема 1:

Следующий код должен включать/отключать динамически добавляемое поле ввода с помощью jquery, но он не работает должным образом:

$(document).ready(function () {
    $('#auto').change(function () {
        if ($(this).val() == 1) {
            $('input[id="speed_car"]').prop('disabled', false).css('background', '').val('4')
        } else {
            $('input[id="speed_car"]').prop('disabled', true).css('background-color', '#03f').val('')
        }
    });
});

Проблема 2: если я сохраняю поле и перезагружаю страницу, она работает, но только для первого ‹ tr > (который содержит другие поля ввода и выбирает).

Как мне изменить код, чтобы он работал правильно?

Вот часть кода, которая добавляет строку:

  var modell = <?php echo $modell; ?>;
   .
   .
   .
  html += '    <td class="left"><select name="car_modell[' + modell + '][auto]">'; 
  html += '     <option value="1" selected="selected"><?php echo $text_enabled; ?></option>';
  html += '     <option value="0"><?php echo $text_disabled; ?></option>';
  html += '    </select></td>';
  html += '    <td class="left"><input type="text" maxlength="1" name="car_modell[' + modell + '][speed_car]" value="4" size="3" /> </td>'; 
  ecc...

Заранее спасибо за помощь.


person Someone33    schedule 18.06.2013    source источник
comment
просто интересно, уникален ли входной идентификатор speed_car? #auto change срабатывает, как и ожидалось? Не могли бы вы предоставить jsfiddle BTW?   -  person A. Wolff    schedule 19.06.2013
comment
это одна из проблем. это всегда один и тот же идентификатор. Но я не знаю, как написать это по-другому   -  person Someone33    schedule 19.06.2013
comment
поэтому простой способ - не использовать идентификатор, а класс. Вы все еще можете применить некоторый контекст, если это необходимо. А как насчет события изменения, оно уволено?   -  person A. Wolff    schedule 19.06.2013
comment
Как говорит жареный, используйте класс, а не идентификатор. Идентификаторы должны быть уникальными.   -  person cssyphus    schedule 19.06.2013
comment
идентификатор или класс всегда будут одинаковыми, если строка будет добавлена. Не меняется. Проблема в том, что строки добавляются динамически.   -  person Someone33    schedule 19.06.2013


Ответы (1)


Вы должны использовать функцию "on". Посмотрите здесь: http://api.jquery.com/on/

jQuery привязывается при загрузке, но «on» заставляет его оценивать/привязывать в этот момент.

$("#dataTable tbody tr").on("click", function(event){
  alert($(this).text());
});
person Micah    schedule 18.06.2013