jQuery在加载图像时未检测到
我有以下代码可以在两种显示图像的方式之间进行选择:jQuery在加载图像时未检测到,jquery,html,Jquery,Html,我有以下代码可以在两种显示图像的方式之间进行选择: slider.find("img").each(function() { $(this).on("load", function() { console.log($(this).attr("src")); var imgW = $(this).width(), imgH = $(this).height(); console.log("width: "+imgW+
slider.find("img").each(function() {
$(this).on("load", function() {
console.log($(this).attr("src"));
var imgW = $(this).width(),
imgH = $(this).height();
console.log("width: "+imgW+" + height: "+imgH);
if (imgW/imgH <= sliderW/sliderH) {
$(this).removeClass("slide-responsive").addClass("img-responsive");
} else {
$(this).addClass("slide-responsive").removeClass("img-responsive");
}
});
});
slider.find(“img”).each(函数(){
$(this).on(“加载”,函数(){
log($(this.attr(“src”));
var imgW=$(this).width(),
imgH=$(this).height();
控制台日志(“宽度:+imgW+”+高度:+imgH);
如果(imgW/imgH如jQuery文档中所述,则使用图像的.load()
可能会出现问题:
与图像一起使用时加载事件的注意事项
开发人员试图使用.load()解决的一个常见问题
快捷方式是在图像(或
图像)已完全加载。关于
这是一个值得注意的问题,包括:
- 它在跨浏览器中无法稳定工作,也不可靠
- 如果图像src设置为与以前相同的src,则在WebKit中无法正确触发
- 它不能正确地冒泡。对于已经存在于浏览器缓存中的图像,DOM树可以停止激发
答案可能是您忘记触发on函数。而不是。
。on
需要一个触发器
这可能意味着你有两个选择
要么使用,要么加载
slider.find("img").each(function() {
$(this).load(function() {
console.log($(this).attr("src"));
var imgW = $(this).width(),
imgH = $(this).height();
console.log("width: "+imgW+" + height: "+imgH);
if (imgW/imgH <= sliderW/sliderH) {
$(this).removeClass("slide-responsive").addClass("img-responsive");
} else {
$(this).addClass("slide-responsive").removeClass("img-responsive");
}
});
});
slider.find(“img”).each(函数(){
$(this.load(function()){
log($(this.attr(“src”));
var imgW=$(this).width(),
imgH=$(this).height();
控制台日志(“宽度:+imgW+”+高度:+imgH);
如果(imgW/imgH图像上是否有显示:无
或可见性:隐藏
如果是这样,这可能会导致jQuery检测元素时出现问题,特别是当它具有显示:none
@VotetoClose时,就是这样。幻灯片最初没有显示,因此jQuery不会检测大小。它确实与JavaScript一起工作:var imgHeight=img.get(0).height;var imgWidth=img.get(0).width;感谢您提供的信息。我不知道“加载”需要触发器。添加它有点难,因为我想知道图像是何时加载的。以后我将继续使用load()。on的优点是您可以缩进事件。并在所有情况下触发其中的函数。例如.on(“就绪”)和.on(“调整大小”).P.S:我想你打错了;)因为.load不需要触发器。on需要触发器。P.P.S:如果我的答案解决了你的问题,请考虑接受我的答案:)
slider.find("img").each(function() {
$(this).on("load", function() {
console.log($(this).attr("src"));
var imgW = $(this).width(),
imgH = $(this).height();
console.log("width: "+imgW+" + height: "+imgH);
if (imgW/imgH <= sliderW/sliderH) {
$(this).removeClass("slide-responsive").addClass("img-responsive");
} else {
$(this).addClass("slide-responsive").removeClass("img-responsive");
}
});
}).trigger("load")