[問題] script重複執行的問題

看板Ajax作者 (poototo)時間12年前 (2012/05/07 17:25), 編輯推噓1(1011)
留言12則, 2人參與, 最新討論串1/1
code如下,就是body最後的alert搞不懂為何執行兩次? Thx 0507 ======================================== <!DOCTYPE html> <html> <head> <style> div {background-color:yellow;margin-top:3em;border-style:solid} </style> <script src="" rel="nofollow">http://code.jquery.com/jquery-latest.js"></script> <script> $(document).ready(function(){ $('h2').each(function(){ $(this).nextUntil("h2").andSelf().wrapAll('<div/>') }); });//ready end </script> </head> <body> <h2>h2 one</h2> <p>one p</p> <p>one p</p> <p>one p</p> <h2>h2 two</h2> <p>two p</p> <p>two p</p> <p>two p</p> <h2>h2 three</h2> <p>three p</p> <p>three p</p> <p>three p</p> <script> alert("OK") </script> </body> </html> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.39.178

05/07 18:06, , 1F
因為 wrapAll()
05/07 18:06, 1F

05/07 18:11, , 2F
包起來的script會在執行一次 可以去看jQuery實作wrapAll
05/07 18:11, 2F

05/07 18:11, , 3F
的方法就知道為什麼了
05/07 18:11, 3F

05/08 14:46, , 4F
h2有三個 為什麼不是執行四次alert?
05/08 14:46, 4F

05/08 14:48, , 5F
而且每次wrapAll都改變了原先的dom這樣下一次each是合理的
05/08 14:48, 5F

05/08 15:05, , 6F
終於看懂了 因為只有最後一次h2因為找不到下一個h2
05/08 15:05, 6F

05/08 15:06, , 7F
所以掃到body最尾端 把<script>也包進去了 只有最後一個div
05/08 15:06, 7F

05/08 15:07, , 8F
把script包進去 所以開始執行時跑<body>時alert一遍
05/08 15:07, 8F

05/08 15:08, , 9F
document.ready時因為innerHTML最後一個div包到script
05/08 15:08, 9F

05/08 15:08, , 10F
所以又跑一遍
05/08 15:08, 10F

05/08 15:58, , 11F
在nextuntil多加一個script就變一個了
05/08 15:58, 11F

05/08 15:58, , 12F
文章代碼(AID): #1FfvK6iW (Ajax)