作者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
1F:推 akiratw:因为 wrapAll() 05/07 18:06
2F:→ akiratw:包起来的script会在执行一次 可以去看jQuery实作wrapAll 05/07 18:11
3F:→ akiratw:的方法就知道为什麽了 05/07 18:11
4F:→ sk1765:h2有三个 为什麽不是执行四次alert? 05/08 14:46
5F:→ sk1765:而且每次wrapAll都改变了原先的dom这样下一次each是合理的 05/08 14:48
6F:→ sk1765:终於看懂了 因为只有最後一次h2因为找不到下一个h2 05/08 15:05
7F:→ sk1765:所以扫到body最尾端 把<script>也包进去了 只有最後一个div 05/08 15:06
8F:→ sk1765:把script包进去 所以开始执行时跑<body>时alert一遍 05/08 15:07
9F:→ sk1765:document.ready时因为innerHTML最後一个div包到script 05/08 15:08
10F:→ sk1765:所以又跑一遍 05/08 15:08
11F:→ sk1765:在nextuntil多加一个script就变一个了 05/08 15:58