Не работает jQuery Mobile

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Аватара пользователя
Sandr
Сообщения: 126
Зарегистрирован: Пн ноя 16, 2015 5:10 pm
Благодарил (а): 19 раз
Поблагодарили: 29 раз

Не работает jQuery Mobile

Сообщение Sandr » Ср май 25, 2016 12:27 pm

Столкнулся с проблемой
Вставляю на сцену простой блок radio

Код: Выделить всё

<fieldset data-role="controlgroup">
     <input type="radio" class="radioLight" id="radioR-1" name="LightRight" value="100" />
    <label for="radioR-1">макс</label>
    <input type="radio" class="radioLight" id="radioR-2" name="LightRight" value="75" />
    <label for="radioR-2">75</label>
    <input type="radio" class="radioLight" id="radioR-3" name="LightRight" value="50" />
    <label for="radioR-3">50</label>
    <input type="radio" class="radioLight" id="radioR-4" name="LightRight" value="25" />
    <label for="radioR-4">25</label>
    <input type="radio" class="radioLight" id="radioR-5" name="LightRight" value="1" />
    <label for="radioR-5">мин</label>
    <input type="radio" class="radioLight" id="radioR-6" name="LightRight" value="0" />
    <label for="radioR-6">выкл</label>
 </fieldset>
 
Добавляю js

Код: Выделить всё

$(document).ready(function () {
  $( ".radioLight" ).change( function() {
    alert( $( this ).val() );
  });
}); 
В идеале должно получится так http://jsfiddle.net/Sandr/825gqvam/2/
2016-05-25_12-16-41.png
2016-05-25_12-16-41.png (6.14 КБ) 2492 просмотра
Но не получается......
И внешне не красиво и JS код не срабатывает
2016-05-25_12-18-49.png
2016-05-25_12-18-49.png (16.21 КБ) 2492 просмотра

Стал искать причину. И нашел ....
Функция processCheckStates в файле templates/scenes/scenes.tpl
перебирает объекты на сцене и обновляет информацию перезаписывая эти объекты заново на сцене
строчка 332 elem.html('<span>'+obj.HTML+'</span>');
и далее

В результате - мой jquery код обращающийся с элементу в DOM структуре страницы
теряет объект (он заменен на новый командой из 332 й строчки :( )

Теперь задача - как каждый раз вновь вешать хук на необходимый DOM элемент после срабатывания processCheckStates
Win Home Serv 2011 / Intel Core i3 / 32 GB ram /
Сцена погода (вертикальная)
mySensor скетчи ( 4х канальный димер | Оптимизация скетчей )
Ну и конечно моя маленькая фабрика - 3D печать / фрезеровка / литье
Аватара пользователя
Sandr
Сообщения: 126
Зарегистрирован: Пн ноя 16, 2015 5:10 pm
Благодарил (а): 19 раз
Поблагодарили: 29 раз

Re: Не работает jQuery Mobile

Сообщение Sandr » Ср май 25, 2016 1:33 pm

С хендлерами все достаточно просто
есть замечательный метод .on()
с помощью которого можно повесить хендлер на "будущие" копии элемента DOM

Код: Выделить всё

$(document).on('change', '.radioLight', function(){
    alert( $( this ).val() );
});
 
Осталось решить проблему со стилями
Win Home Serv 2011 / Intel Core i3 / 32 GB ram /
Сцена погода (вертикальная)
mySensor скетчи ( 4х канальный димер | Оптимизация скетчей )
Ну и конечно моя маленькая фабрика - 3D печать / фрезеровка / литье
Ответить