Я не могу запустить методы для элемента в моем обратном вызове - PullRequest
1 голос
/ 07 октября 2019

Я временно добавляю цвет фона перед тем, как lazyload загружает мое изображение, так как элемент img не поддерживает псевдо-классы, я решил использовать диапазон непосредственно перед ним с теми же размерами и назначить ему цвет фона наиболее доминирующегоцвет изображения. Мне нужно иметь возможность скрыть этот промежуток после загрузки изображения, но я не могу получить доступ к другим элементам dom в обратном вызове. Я использую verlok / lazyload

, поэтому для функции обратного вызова (el) я пытался получить элемент раньше, как это el.before (), но я получаю сообщение об ошибке «раньше не функция»

HTML

<span class="img_overlay" style="width:100px;height:100px;background:#cccccc"></span>

<img class="card-img-top" data-src="URL_TO_IMG">    

JS

   var lazyLoadInstance = new LazyLoad({
    elements_selector: "[data-src], [data-bg]",
    load_delay: 1000,
    callback_loaded: function(el) {
        if(el.before().hasClass('img_overlay')) {
                        el.closest('.img_overlay').addClass('class_name');
        }
    },
});

Если я зарегистрирую 'el', я получу элемент img в виде строки, я ожидал, что это будет элемент dom. Помощь будет оценена.

1 Ответ

2 голосов
/ 07 октября 2019

Если el является элементом dom, вам необходимо превратить его в объект jQuery, чтобы использовать методы jQuery

Кроме того, правильный метод для нацеливания на предыдущего родного брата - prev(), поскольку before() - это метод вставки

Попробуйте что-то вроде:

callback_loaded: function(el) {
  var $prev = $(el).prev();
  if ($prev.hasClass('img_overlay')) {
    $prev.addClass('class_name');
  }
},
...