看板 Ajax 關於我們 聯絡資訊
code如下,就是body最後的alert搞不懂為何執行兩次? Thx 0507 ======================================== <!DOCTYPE html> <html> <head> <style> div {background-color:yellow;margin-top:3em;border-style:solid} </style> <script src="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
akiratw:因為 wrapAll() 05/07 18:06
akiratw:包起來的script會在執行一次 可以去看jQuery實作wrapAll 05/07 18:11
akiratw:的方法就知道為什麼了 05/07 18:11
sk1765:h2有三個 為什麼不是執行四次alert? 05/08 14:46
sk1765:而且每次wrapAll都改變了原先的dom這樣下一次each是合理的 05/08 14:48
sk1765:終於看懂了 因為只有最後一次h2因為找不到下一個h2 05/08 15:05
sk1765:所以掃到body最尾端 把<script>也包進去了 只有最後一個div 05/08 15:06
sk1765:把script包進去 所以開始執行時跑<body>時alert一遍 05/08 15:07
sk1765:document.ready時因為innerHTML最後一個div包到script 05/08 15:08
sk1765:所以又跑一遍 05/08 15:08
sk1765:在nextuntil多加一個script就變一個了 05/08 15:58
sk1765:http://jsfiddle.net/aScYj/1/ 05/08 15:58