1. 程式人生 > >click、onclick、on事件執行優先順序

click、onclick、on事件執行優先順序

按照事件冒泡的觸發順序,應該是我的事件先觸發

結果不是這樣的。我發現使用$().click(function(){})繫結的事件,而我使用$("body").on("click","",function(){})繫結的事件。

我希望比較一下它們的差別,專門寫了一下程式碼,檢視執行結果。

程式碼如下:

1 2 3 4 5 <div id="div_2" onclick="console.error('onclick_2')"> <div id="div_1" onclick="console.error('onclick_1')"> Click this Div
</div> </div>

JS:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 $(function(){ $("body").on("click","#div_2",function(){ console.error("on bind click 2"); }); $("body").on("click","#div_1",function(){ console.error("on bind click 1"); }); $("#div_2").click(function(){ console.error("click 2"
); }); $("#div_1").click(function(){ console.error("click 1"); }); });

執行結果:

得到結論:

onclick,click,on()的優先關係:onclick>click>on();

onclick和click繫結的事件,彼此之間遵守事件冒泡規則,從內到外觸發;

on()繫結的事件,總是晚於onclick和click繫結的事件觸發;

由此可以得到,使用on()繫結的事件與onclick和click繫結的事件,判斷觸發先後順序時,不能只考慮事件冒泡規則。