$("<img rel="nofollow noreferrer" />").one('load'多次触发

Jor*_*ing 1 javascript ajax jquery

我正在使用此代码:

function CheckImage(a, i) {
    $("<img/>").one('load', function () {
        $("div.photos").append(this);
    }).attr('src',a).attr('data-photo', '0' + i);
}
Run Code Online (Sandbox Code Playgroud)

检查图像是否存在.

举个例子:

Photo1 = 'https://imagebank.sportdirect.com/DIx.jpg_RB51,51,255,255,255,127/-/article/111108/111108-1200-01.jpg';
CheckImage(Photo1, '1');
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力,但有时当我在另一个屏幕内使用Ajax加载屏幕时,它会闪烁几次并打印图像4次而不是一次.

知道这是从哪里来的吗?

这是页面的ajax调用:

$.ajax({
    url:'/change_item_detail?article=123',
    type:'GET',
    success: function(data){
        $("#left").html(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

然后在change_item_detail页面上加载它:

Photo1 = '1.jpg';
CheckImage(Photo1, '1');
Photo2 = '2.jpg';
CheckImage(Photo2, '2');
Photo3 = '3.jpg';
CheckImage(Photo3, '3');
Photo4 = '4.jpg';
CheckImage(Photo4, '4');
Run Code Online (Sandbox Code Playgroud)

更新:

我发现它发射了两次.所以有4个图像检查它有时会显示8个图像..任何想法?赏金将在一分钟内添加.

Rob*_*evy 6

第二个事件是来自你插入的img .append(this).尝试向元素添加一个类以标记已经处理过的类,然后在事件处理程序中检查它.