布爾教育PHP培訓(xùn)
官方網(wǎng)址:www.itbool.com
學(xué)習(xí)論壇:www.zixue.it
一位學(xué)員碰到這樣的問(wèn)題: 他在form表單上綁定onsubmit事件,并在對(duì)應(yīng)的事件函數(shù)中return false; 以阻止表單的提交.
0級(jí)DOM綁定方式,可以阻止, 但2級(jí)DOM綁定方式不能阻止.
0級(jí)DOM代碼如下, 可以阻止
2級(jí)DOM代碼如下, 不能阻止.
疑問(wèn): 綁定的事件函數(shù),同樣是return false,為何后者不能阻止.
這是因?yàn)樵?級(jí)綁定方式中,如果需要阻止事件的傳播/冒泡,需要用到事件對(duì)象對(duì)象的stopPropagation()方法.
阻止事件的默認(rèn)行為,要用事件對(duì)象的preventDefault()方法.
正確的寫法如下:
這個(gè)問(wèn)題很高深嗎? 一點(diǎn)都不, 其實(shí)是因?yàn)樵搶W(xué)員追求技巧而不注重基礎(chǔ)引起的.
就如倚天屠龍記中的周芷若,內(nèi)力不足,強(qiáng)練九陰真經(jīng),終致走火入魔.
如果認(rèn)真學(xué)習(xí)過(guò)十八哥的”JS高級(jí)”中的事件停止傳播與效果阻止
就不會(huì)有此疑問(wèn).
所以此處提醒同學(xué)們: 學(xué)習(xí),要盡量系統(tǒng)性的學(xué).爭(zhēng)取學(xué)一門,得到一門.
而不要搜索幾個(gè)新鮮知識(shí)點(diǎn),試來(lái)試去,看似了解很多,實(shí)則一片茫然.
如果你仍要刨根問(wèn)底,為什么2級(jí)標(biāo)準(zhǔn)中,綁定的事件,return false不能阻止事件發(fā)生呢?
答:w3c中規(guī)定,addEventListener()的第2個(gè)參數(shù)中綁定的事件對(duì)象”無(wú)返回值”,自然return false也不靈了.
官方說(shuō)明:O網(wǎng)頁(yè)鏈接
細(xì)看這一句:
This is an ECMAScript function reference. This method has no return value. The parameter is a Event object.