用on綁定時,我把子元素的 綁定到 document,而把父元素綁定到上級元素,導致 return false 阻止冒泡無效。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>事件冒泡</title> <script src="jquery-1.7.1.js" type="text/javascript"></script> <script language="javascript" type="text/javascript"> $(function () { $(document).on("click","#p1",function(e){ console.log(e.target.tagName); console.log("p1被點擊了"); //e.stopPropagation(); //終止冒泡的方法 return false; }) $("#aa").on("click","#td1",function(e){ console.log(e.target.tagName); console.log("td1被點擊了"); }) $("#aa").on("click","#tr1",function(e){ console.log(e.target.tagName); console.log("tr1被點擊了"); }) $("#aa").on("click","#table1",function(e){ console.log(e.target.tagName); console.log("table1被點擊了"); }) }); </script> </head> <body id="aa"> <table onclick="alert('這是table')"> <tr onclick="alert('這是tr')"> <td onclick="alert('這是td')"> <p onclick="alert('這是p')">段落</p> </td> </tr> </table> <table id="table1"> <tr id="tr1"> <td id="td1"> <p id="p1">你好</p> </td> </tr> </table> </body> </html> on方法 將click等事件綁定在document對象上,頁面上任何元素發生的click事件都冒泡到document對象上得到處理。
增加了綁定效率。當事件冒泡到document對象時,檢測事件的target,如果與傳入的選擇符(這里是button)匹配,就觸發事件,否則不觸發。
修改為統一綁定對象后即解決,初步認為是因為 on方法的綁定機制問題。
所以return false 無效。子元素和父元素修改為相同 綁定元素后,問題解決
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>事件冒泡</title> <script src="jquery-1.7.1.js" type="text/javascript"></script> <script language="javascript" type="text/javascript"> $(function () { $("#aa").on("click","#p1",function(e){ console.log(e.target.tagName); console.log("p1被點擊了"); //e.stopPropagation(); //終止冒泡的方法 return false; }) $("#aa").on("click","#td1",function(e){ console.log(e.target.tagName); console.log("td1被點擊了"); }) $("#aa").on("click","#tr1",function(e){ console.log(e.target.tagName); console.log("tr1被點擊了"); }) $("#aa").on("click","#table1",function(e){ console.log(e.target.tagName); console.log("table1被點擊了"); }) }); </script> </head> <body id="aa"> <table onclick="alert('這是table')"> <tr onclick="alert('這是tr')"> <td onclick="alert('這是td')"> <p onclick="alert('這是p')">段落</p> </td> </tr> </table> <table id="table1"> <tr id="tr1"> <td id="td1"> <p id="p1">你好</p> </td> </tr> </table> </body> </html> 以上所述是小編給大家介紹的jQuery中on綁定事件后引發的事件冒泡問題及解決辦法,希望能夠幫助到大家!
新聞熱點
疑難解答