Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery在加载图像时未检测到_Jquery_Html - Fatal编程技术网

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")