鍍金池/ 問(wèn)答/HTML/ 自定義方法事件委托怎么寫(xiě)

自定義方法事件委托怎么寫(xiě)

比如
$(".img.lazy").lazyload({

effect : "fadeIn"

});

如果圖片是循環(huán)出來(lái)的話(huà)這個(gè)懶加載就不好用 這個(gè)方法寫(xiě)成事件委托形式怎么寫(xiě)

事件委托 sorry

就是說(shuō)正常的click事件
$(".box").click(callback);對(duì)循環(huán)出來(lái)的節(jié)點(diǎn)是沒(méi)有效果的應(yīng)該寫(xiě)成
$(".boxparent").on("click",".box",callback);

那么我上面那個(gè)懶加載方法寫(xiě)成這種形式可以么

回答
編輯回答
哚蕾咪

lazyload是一個(gè)插件功能,不能一個(gè)事件~,所以不存在委托什么的

你可以在批量添加完一批圖片時(shí),統(tǒng)一的添加上一個(gè)自定義的標(biāo)識(shí)類(lèi)
例如.watched,避免已經(jīng)被lazyload標(biāo)識(shí)過(guò)的被再次lazyload.
可能這個(gè)特性在lazyload中已經(jīng)存在,我相應(yīng)會(huì)有的
然后通過(guò)

$(".img.lazy:not(.watched)").lazyload({
    effect : "fadeIn"
});

lazyLoad基本上使用如下方法實(shí)現(xiàn)

function lazyLoad(imgDOM,resultCallback){
    var imgSrc,tempImg;
    if($(imgDOM).hasClass("watched")||$(imgDOM).attr("data-loaded")==="done"){
       return;
    }
    imgSrc=$(imgDOM).attr("data-origin-src");
    tempImg=new Image();
    tempImg.onload=function(){
        $(imgDOM).attr("src",imgSrc);
        $(imgDOM).attr("data-loaded","done");
        doneFlag=true;
        resultCallback&&resultCallback.apply(imgDOM,[]);
        tempImg=null;
    }
    tempImg.src=imgSrc;
}
2018年1月30日 15:06
編輯回答
墨染殤

一臉懵逼 ,時(shí)間委托是什么東西

2018年8月23日 18:23
編輯回答
執(zhí)念

懶加載的也可以用 document 委托啊

2017年8月7日 17:14
編輯回答
維她命

我覺(jué)得,你的問(wèn)題的解決辦法應(yīng)該不行,因?yàn)閼屑虞d不是 click,沒(méi)辦法做委托

所以我覺(jué)得可以這樣做,等 dom 刷出來(lái)之后再綁定 lazyload,因?yàn)?lazyload 需要有 dom 才可以綁定


var test = '<img class="lazy" data-src="https://www.baidu.com/img/bd_logo1.png">';

$(document).ready(function(){
  setTimeout(function(){
    $(".app").append(test)
    $(".lazy").lazyload({
          effect : "slideDown",
        });
  },10000)
});

jsrun 演示地址:

http://jsrun.net/Y2qKp/

2017年7月9日 08:18