由于img元素不支持伪类,因此我在lazyload加载图像之前临时添加了背景色,因此我选择了在其之前使用具有相同尺寸的跨度,并为其设置了最主要的背景色图像的颜色。加载图像后,我需要能够隐藏该范围,但似乎无法访问回调中的其他dom元素。我正在使用verlok / lazyload
因此对于回调函数(el),我试图像el.before()这样先获取元素,但是我收到一条错误消息,提示“ 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元素。帮助将不胜感激。
答案 0 :(得分:2)
如果el
是dom元素,则需要将其变成jQuery对象才能使用jQuery方法
此外,由于before()
是插入方法,因此,用于定位先前同级的正确方法是prev()
尝试类似的东西:
callback_loaded: function(el) {
var $prev = $(el).prev();
if ($prev.hasClass('img_overlay')) {
$prev.addClass('class_name');
}
},