Javascript 如何将预加载图像设置到相应的位置?

Javascript 如何将预加载图像设置到相应的位置?,javascript,html,Javascript,Html,我最近遇到了这样一个问题,不知道该怎么解决。我有一个HTML图像表: 表格行数将根据用户输入动态更改,而无需页面刷新 表中的每一行在数据库中都包含一个特殊图像 我想为显示的行加载图像(许多其他行是隐藏的,所以我不想为它们加载图像) 我发现了一个类似以下的片段: var img = $("<img />").attr('src', 'http://somedomain.com/image.jpg') .load(function() { if (!this.co

我最近遇到了这样一个问题,不知道该怎么解决。我有一个HTML图像表:

  • 表格行数将根据用户输入动态更改,而无需页面刷新
  • 表中的每一行在数据库中都包含一个特殊图像
  • 我想为显示的行加载图像(许多其他行是隐藏的,所以我不想为它们加载图像)
  • 我发现了一个类似以下的片段:

    var img = $("<img />").attr('src', 'http://somedomain.com/image.jpg')
        .load(function() {
            if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
                alert('broken image!');
            } else {
                $("#something").append(img);
            }
        });
    
    var img=$(“
    但问题是,在.load方法中,图像本身会忘记它应该放在哪里(因为我使用for循环在表中逐行加载图像)


    有人知道如何解决此问题吗?

    您需要将图像与其行关联。如果您在创建图像时手头有行,您可以在
    .load
    的回调中使用它。例如,如果在某个时候您有一个新行列表,您可以执行以下操作:

    var loadImageForRow = function(row) { 
        var img = $("<img/>").attr('src', 'my-image-source.png')
            .load(function() { 
                if (!this.complete || typeof this.naturalWidth == 'undefined' || this.naturalWidth == 0) {
                    // handle broken image
                } else {
                     row.find('.image-cell').append(img);
                }
            });
    });
    
    newRows.each(function() { loadImageForRow($(this)); } 
    
    var loadImageForRow=函数(行){
    变量img=$(“
    
    这将使用回调内部封闭闭包中的
    参数。或者,您可以使用图像或行上的数据属性(例如,在
    img
    元素上放置类似
    data row index='17'
    的内容)或任何等效机制来关联这两个参数。

    我假设
    $(“#某物”)
    是应该添加图像的行吗?是的。但是由于行号不是固定的,所以我可以传入一个变量,如“for I=0”中的“I”;iHi Avish,非常感谢您的帮助!我会尝试让您知道它是否适合我。