Вход

Просмотр полной версии : Отследить ajax изменение с помощью jquery


sofuwa
14.09.2018, 11:14
Здравствуйте, я новичек, не знаю сюда ли вопрос. Помогите если не сложно )

<a href="/stati/." onclick="BX.ajax.insertToNode('/stati/?bxajaxid=4636b2b1712b968629eb015d0ab2bf6d', 'comp_4636b2b1712b968629eb015d0ab2bf6d'); return false;" class="catalog_section_top">Статьи</a>
Вот есть такая ссылка на странице, при нажатии ajax подгружает контент и мне нужно что бы в этом контенте выбрать чекбокс

<input type="checkbox" value="Y" name="arrFilter_309_2316230027" id="arrFilter_309_2316230027" onclick="smartFilter.click(this)">

Пытался использовать live() и что то не сработало. live вроде должен работать даже на тех элементах которых не было при загрузке странице. Или может нужно отследить onclick="BX.ajax.insertToNode и потом как то перепроверить страницу.

laimas
14.09.2018, 11:23
live() давно устарело, да и флажок имеет обработчик onclick.

Что значит выбрать - добавить свой какой-то обработчик?

ksa
14.09.2018, 11:27
Вот есть такая ссылка на странице, при нажатии ajax подгружает контент и мне нужно что бы в этом контенте выбрать чекбокс
Как вариант:
- запустить setInterval()
- проверять в нем, не появился ли нужный чек
- если появился, чекать его и убивать setInterval()

sofuwa
14.09.2018, 11:27
live() давно устарело, да и флажок имеет обработчик onclick.

Что значит выбрать - добавить свой какой-то обработчик?

просто отметить checked="checked". Прочитал что устарело, on() вроде сейчас используют $(document).on пытаюсь сделать, пока не вышло )

ksa
14.09.2018, 11:28
Прочитал что устарело, on() вроде сейчас $(document).on пытаюсь сделать, пока не вышло )
И не выйдет... Т.к. этот метод нужен для обработки событий, а у тебя их нет.

Т.ч. см.
https://javascript.ru/forum/ajax/75220-otsledit-ajax-izmenenie-s-pomoshhyu-jquery.html#post494626

sofuwa
14.09.2018, 11:29
Как вариант:
- запустить setInterval()
- проверять в нем, не появился ли нужный чек
- если появился, чекать его и убивать setInterval()
спасибо за мысль

laimas
14.09.2018, 11:51
просто отметить checked="checked"

Серверные скрипты доступны? Значит просто на сервере сделать. Либо JS код в части BX.ajax дополнить. Тяжелая артиллерия, это MutationObserver.

sofuwa
14.09.2018, 12:21
var proverka = setInterval(z, 100)
function z() {
$('#arrFilter_309_2316230027').attr('checked', true)
if($("#arrFilter_309_2316230027").attr("checked") == 'checked') {clearInterval(proverka); }
}
работает :)

sofuwa
14.09.2018, 12:25
Серверные скрипты доступны? Значит просто на сервере сделать. Либо JS код в части BX.ajax дополнить. Тяжелая артиллерия, это MutationObserver.
это конечно можно, только в битрикс очень всё запутано, где там дописывать. И в принципе у меня всё сделано, нужно чисто визуально поставить галочку, поэтому и так сойдёт)) Так то конечно идеально было бы соединить мой код php и битрикса, что бы он ставил галочку в фильтре, но это сложно, может потом.

laimas
14.09.2018, 12:39
это конечно можно, только в битрикс очень всё запутано

Он компилирован, поэтому не получится. А таймер, ну это для одного случая пойдет.