作者poototo (poototo)
看板Ajax
標題[問題] script重複執行的問題
時間Mon May 7 17:25:22 2012
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