Добавить класс кнопке при клике

101
31 мая 2021, 13:20

В id="convert-json-to-html-tree-sets" подгружаю форму с инпутами и кнопками к каждому инпуту

<div id="ikz-settings-sets">
 <div id="convert-json-to-html-tree-sets"></div>

Есть подключаемый файл к странице с ф-цией генерации нужной структуры htmlдля id="ikz-settings-sets"

Сама ф-ция

     function convertJsonToHtmlTree_Sets(obj, typeOfDevice,
     nameOfKey,    initialMasDeviceSettings, ikz35Key) {
               var huck.push(nameOfKey + key);
   var str = str +'<input id="' + nameOfKey + key + '"  >' + '</div>' +      
      '<div id="settings-for-device-' + nameOfKey + key +   '"' + 
    'class="button-other"></div>';       

                    return str;
                   }

На странице вызываю эту ф-цию

   $('#convert-json-to-html-tree-sets').append( convertJsonToHtmlTree_Sets(result.device_settings.bonding, typeOfDevice, '', initialMasDeviceSettingsSets) );

Мне необходимо, чтобы при клике кнопке добавлялся нужный класс ".button-not-press"

  for ( var i = 0; i < huck.length; i++ ) {
        var huck2 = $('#settings-for-device-' + huck[i]);
            $('#ikz-settings-sets input').on('input', function() { 
                        $(this).addClass('changedInput'); 
                            currentDeviceSettingsSets = ( $('#ikz-settings-sets').get(0).outerHTML ); 

                            if ( initialDeviceSettingsSets != currentDeviceSettingsSets ) { 

                                    $('#settings-for-device-' + huck[i]).addClass('button-not-press'); 
                            } else { 
                                    $('#settings-for-device-' + huck[i]).removeClass('button-not-press'); 
                            }   
                    }); 
                }
Answer 1

Проблема в коде заключается в том, что навешивание события через запись -

$('#ikz-settings-sets').on('input', function() {})

Приводит к тому, что события подписываются только для уже существующих DOM элементов. Вам необходимо переписать установку слушателя событий в стиле

$('#ikz-settings-sets input').on('input', 'input', function(event) {...})

в таком варианте записи событие будет проверяться динамически для всех элементов. От себя я бы рекомендовал вешать событие не на сам тег input а создать для этого отдельный classname и использовать его.

READ ALSO
Как написать эту jquery строку на чистом javascript?

Как написать эту jquery строку на чистом javascript?

Как написать эту jquery строку на чистом javascript? Строку я обозначил комментарием

182
Не работает алгоритм?

Не работает алгоритм?

делаю алгоритм сортировки на джаваскриптРаботает на другом алгоритме - поиска наименьшего числа

98
Методы жизненного цикла React

Методы жизненного цикла React

Какие на данный момент можно использовать методы жизненного цикла в React? В интернете только устаревшая информация а в офдокументации расписано...

83