經過Jquery append方法添加的img元素被執行了兩次onload事件

彷佛是Jquery的一個Bug,由於通常來講,在任何狀況下都不該該重複觸發onload事件。html

重現Bug的代碼以下:jquery

$(function(){ 
    $("#test").append('<img onload="alert(\'hi\')" src="Image.jpg">');
})

百般百度無果,最終在StackOverFlow上找到了一樣的問題:app

http://stackoverflow.com/questions/10816053/jquery-img-added-through-append-triggers-onload-twicehtm

該問題中給出的回答是Jquery在create和shift元素的時候都會致使觸發onload事件。聽上去並非很科學。不過至少給出了一種能夠避免Bug的寫法:事件

$(function() {
    $("#test").append(
        $("<img>").attr({
            src: "Bachalpseeflowers.jpg",
            onload: "alert(\'hi\')"
        })
    );
});

或者,能夠使用$('#test').html()方法代替append方法添加包含onload事件的圖片。圖片

相關文章
相關標籤/搜索