Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.2k views
in Technique[技术] by (71.8m points)

html - JQuery .on() event handler usage for dynamically loaded image

My pages are generating dynamically by ajax response.

Each response has an img element with specified id. I need them to fade in when loaded.

.load() and .bind('load') works fine when page is loaded for first time. But not working in next response for sure.

$('#my_img').load(function(){
   $(this).hide().fadeIn('slow');
});

So i need to use .on() event handler. But doesn't work.

$('body').on('load','#my_img',function(){
   $(this).hide().fadeIn('slow');
});

Note: This is not a cache issue. Img src also has a random query string.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

onload event doesn't bubble, so you cannot delegate it. But, if you don't need to support IE8<, you can capture event instead which will work for any dynamic img:

document.body.addEventListener(
    'load',
    function(event){
        var elm = event.target;
        if( elm.id === 'my_img'){ // or any other filtering condition
            // do some stuff
        }
    },
    true // Capture event
);

-DEMO-


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...