ajax блокировка нативного javascript

267
08 марта 2017, 19:34

Здравствуйте. Тема очень заезженная, но я ответа так и не смог найти. Всем известно, что после подгрузки данных AJAX остальные скрипты выполняться не будут. Нужно, их инициализировать через success, ajaxComplete и т.п. Но я нигде не нашел решения относительно нативного javascript. Все решения касаются jQuery! Так получилось, что часть кода (фотогалерея) написана на нативном javascript. Весь код выкладывать думаю незачем. Листаются фотографии так:

var gallery = new Gallery(sources);
Array.prototype.forEach.call(links, function(link, index) {
  link.onclick = function() {
    gallery.show(index);
  };
});

Как мне заставить данный код работать? Методы success, ajaxComplete пригодны только для jQuery. Возможно, выше код попытаться привязать к jQuery, но как такое сделать - не знаю.

Утка Учится Уму - вы правы. Надо добавить код вызова.

var WORKS_METHOD ={
  handlerData:function(resJSON){
    var templateSource   = $("#works-template").html(),
      template = Handlebars.compile(templateSource),
      worksHTML = template(resJSON);
    $('#works-container').html(worksHTML);        
  },
  loadWorksData : function(){        
    $.ajax({
      url:"https://path/to/worksdata.json",
      method:'get',
      success:this.handlerData
    })
  }
};
$(document).ready(function(){
  WORKS_METHOD.loadWorksData();
});

Вызов AJAX подгружает превьюшки фотографий, по клику на которые вызывается данная галерея. Вы предлагаете переписать вызов на xmlHTTPRequest?

Answer 1

Используйте событийные функции jQuery.on - у вас есть ссылки, так что делайте аналогично примерам в документации:

$( ".myLinkClass a").on( "click", function() {
 var index = 0;
 // Вычисляем index для показа соответствующей галереи
 // ...
 // Показываем её
  gallery.show(index);
});

Индекс можно хранить в ссылке в data атрибуте, или же вычислять динамически.

READ ALSO
почему выполняется обработчик

почему выполняется обработчик

Из базы выводится следующее

189
Pasport.js создаёт ещё одну сессию

Pasport.js создаёт ещё одну сессию

В общем такая проблемаДелаю авторизацию для node

372
Не открывается изображение для обрезки Jcrop

Не открывается изображение для обрезки Jcrop

Есть скрипт когда пытаюсь сделать превью то превю фото не открывается, но если готовое фото вставить то все работает по ссылке то есть так...

319
Тригер на изменение текста в инпуте

Тригер на изменение текста в инпуте

Какое событие нужно использовать, чтобы оно срабатывало каждый раз, когда в инпут добавляется новый символ?on('change') срабатывает только тогда,...

246