Я использую бутстрап и сборщик часов из http://weareoutman.github.io/clockpicker/
Он отлично работает, когда я загружаю главную страницу. Но когда я загружаю новый контент из другого php-файла в div с помощью вызова AJAX, часы перестают работать.
Clockpicker использует jQuery внизу страницы.
Новый контент, который я загружаю с помощью ajax, также содержит кнопку ClockPicker. Но это не сработает. Что-то не так с jQuery внизу страницы?
Я новичок в jQuery и не знаю ни синтаксиса, ни языка.
<?PHP
echo "<div class=\"input-group clockpicker col-md-6\" data-placement=\"right\" data-align=\"top\" data-autoclose=\"true\">";
echo "<input
type=\"text\"class=\"form-control input-sm\" onchange=\"ajax_function('kuk','alter_schedule.php?ltime='+this.value+'&cid=".$child_id."&date=".$row['date']."&what=3')\" value=\"".date("H:i", strtotime($row['schedule_start']))."\">";
echo "<span class=\"input-group-addon\">";
echo "<span class=\"glyphicon glyphicon-time\"></span>";
echo "</span>";
echo "</div>";
?>
<script type="text/javascript">
$('.clockpicker').clockpicker();
</script>
jQuery знает только об элементах на странице во время ее запуска, поэтому новые элементы, добавленные в DOM, не распознаются jQuery. Для борьбы с этим использовать делегирование мероприятия, всплывающие события от недавно добавленных элементов до точки в DOM, которая была там, когда jQuery запускался при загрузке страницы. Многие люди используют document
как место, где можно поймать всплывающее событие, но не обязательно подниматься так высоко в дерево DOM. в идеале Вы должны делегировать ближайшему родителю, который существует во время загрузки страницы.
Других решений пока нет …