+ -
当前位置:首页 → 问答吧 → $("body").wrapInner 会运行两次?jquery的bug?

$("body").wrapInner 会运行两次?jquery的bug?

时间:2011-11-25

来源:互联网

$("body").wrapInner("<div class='test'></div>");

发现会有两层<div class='test'></div>讲原有body间内容包裹,而如果是对普通div操作则不会出现这种问题。

用的jquery 1.5.2,难道是bug?

不知道有木有人遇到相同情况,怎么解决的?

作者: voteon83   发布时间: 2011-11-25

1.7表示无压力

作者: ifandui   发布时间: 2011-11-25

我估计是你的方法被调了两次 前面alert一下看看

作者: ifandui   发布时间: 2011-11-25

我这边没问题,应该是你其他代码导致这段代码执行了两次
HTML code
<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.2.min.js"></script>
<script>
$(function(){
    $("body").wrapInner("<div class='test'></div>");
});

</script>
</head>
<body>
<div id="wrap">其他内容</div>
</body>

作者: p2227   发布时间: 2011-11-25

解决了,我的代码本身没问题。

原来是在body标签还未完全加载的情况下触发此事件,则会wrapInner两次,谢谢#3的代码

作者: voteon83   发布时间: 2011-11-25

还是有问题,就算加了$(function(){});也还是运行两次

问题出在于 “DOM节点内的script标记引发$.fn.ready函数执行2次” http://cmc3.cn/n/228.html

作者: voteon83   发布时间: 2011-11-25

引用 5 楼 voteon83 的回复:

还是有问题,就算加了$(function(){});也还是运行两次

问题出在于 “DOM节点内的script标记引发$.fn.ready函数执行2次” http://cmc3.cn/n/228.html
把整个$();放在head中

作者: p2227   发布时间: 2011-11-25

引用 6 楼 p2227 的回复:

引用 5 楼 voteon83 的回复:

还是有问题,就算加了$(function(){});也还是运行两次

问题出在于 “DOM节点内的script标记引发$.fn.ready函数执行2次” http://cmc3.cn/n/228.html
把整个$();放在head中


可能你理解错了,是只要wrapInner的目标容器内有脚本,就会被执行两次
我是为了写一个jquery插件,不能限制别人body区域不能放脚本。
测试代码如下:

HTML code

<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.2.min.js"></script>
<script>
    $(function(){$("body").wrapInner("<div class='test'></div>");});
</script>
</head>
<body>
<div id="wrap">
    其他内容  
</div>
<script>
    alert($);
</script>
</body>

作者: voteon83   发布时间: 2011-11-25

wrapInner,wrap,wrapAll都涉及到此问题

作者: voteon83   发布时间: 2011-11-25

表示从未用过这些方法 学习了

作者: ifandui   发布时间: 2011-11-25

这个应该是不可避免的吧,你body内部的DOM结构发生变化了,浏览器会再次加载新的DOM结构 那里面的script肯定是要再次执行的

作者: ifandui   发布时间: 2011-11-25

相关阅读 更多

热门下载

更多