У меня есть js файл для обработки моего input (там код раскрывания списка и т.д.) и я ajax методом добавляются еще елементы input, но на них уже не работает этот js файл, а если я просто добавлю $.getScript("js/input_ajax_js.js"); , то скрипт выполняется 2 раза . Надеюсь понятно объяснил.
Вам не нужно загружать другой файл js для добавления событий к динамически добавленным элементам DOM модели.
Есть много способов в jqeury добавления обработчика события.
Первый пример который не будет добавлять события к динамически добавленным элементам:
$(document).ready(function() {
...
$('simple element').click(function() {
//Какое-то действие
});
...
});
Наверное вы сделали так.
А вот пример добавления обработчика что будет работать со всеми элементами:
$(document).ready(function() {
...
$(document).on('click', 'simple element', function(e){
//Какое-то действие
});
...
});
У меня есть обработчик всех элементов input (мой собственный input который можно отредактировать вручную и с выплывающим списком), вот как выглядит input:
<div class="body_list">
<input type="text" name="value_course">
<div class="array">▼</div>
</div>
<div id="list_rasp"></div>
а вот обработчик всех input:
$("div.body_list").each(function(){
тут я беру имя таблицы (из атрибута name) и по нему понимаю какие данные заполнять в список (в )
};
Ну вот мне и нужно чтобы после динамического добавления нового input у меня и он обрабатывался
//тело input (каждый input находится в теге div.bodu_list и рядом тег div#list_rasp в котором будет список)
<div class="body_list">
<input type="text" name="value_course">
<div class="array">▼</div>
</div>
<div id="list_rasp"></div>
$("div.body_list").each(function(){ //перебор всех элементов с input
if($(this).next().html()==""){ //проверка списка на пустоту
var teg = [];
var name_table = ($(this).find("input").attr("name").substr(6));//убирает из name "value_"
$.each(eval(name_table), function(i){ //перебор массива (имя массива взято из name в input)
var val = eval(name_table)[i];
teg[i] = "<div id='"+val+"' class='list_rasp'>"+val+"</div>" //создание списка
});
$(this).next().html(teg); //заполняем div#list_rasp тегами в который данные из массива
reset(); // функция очистки input при клике на него
checking(); // функция выбора элемента списка при клике на него
};
});
Сам массив я беру из php методом ajax, выглядит так (напишу один):
var course = $.parseJSON(data.json_course);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости