$("body").wrapInner 会运行两次?jquery的bug? $("body").wrapInner("<div class='test'></div>");发现会有两层<div class='test'></div>讲原有body间内容包裹,而如果是对普通div操作则不会出现这种问题。用的jquery 1.5.2,难道是bug?不知道有木有人遇到相同情况,怎么解决的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我估计是你的方法被调了两次 前面alert一下看看 我这边没问题,应该是你其他代码导致这段代码执行了两次<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> 解决了,我的代码本身没问题。原来是在body标签还未完全加载的情况下触发此事件,则会wrapInner两次,谢谢#3的代码 还是有问题,就算加了$(function(){});也还是运行两次问题出在于 “DOM节点内的script标记引发$.fn.ready函数执行2次” http://cmc3.cn/n/228.html 可能你理解错了,是只要wrapInner的目标容器内有脚本,就会被执行两次我是为了写一个jquery插件,不能限制别人body区域不能放脚本。测试代码如下:<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> wrapInner,wrap,wrapAll都涉及到此问题 这个应该是不可避免的吧,你body内部的DOM结构发生变化了,浏览器会再次加载新的DOM结构 那里面的script肯定是要再次执行的 这和jquery的版本没有关系,也不是bugwrapInner的意思就是在元素内部包裹包裹前:<body><div id="wrap"> 其他内容 </div><script> alert($);</script></body>包裹后:<body><div class='test'><div id="wrap"> 其他内容 </div><script> alert($);</script></div></body>执行动态添加的<script>代码是jquery挺好的功能。$(function(){ $('<\script>alert("zswang 路过")<\/script>').appendTo('body');}); 可以选择只包裹body下一级的div元素。$(function(){ $("body>div").wrap("<div class='test'></div>");}); 如果DIV内部还有脚本呢?何来非BUG一说? 不按照你的意愿执行就是bug?虽然我觉得很合理,但是不是bug你可以找jquery作者讨论一下,超出了我控制的范围。解决的方案还有一种,就是先把script都移除掉,再wrap。 $("script").remove(); LS的,你一直说这不是BUG,然后给出种种非常规的办法,哈哈,我表示很无奈不过我现在换用其他方式解决了。我上面都说了,我在写一个jquery插件,不可避免别人在目标容器内放置脚本。remove掉script就是破坏别人页面了 jquery li的问题 一个基础性问题。请指点。 不理clearInterval使用方法 怎样在页面上检测事件和事件的对象 紧急求助!3组radiobutton连动的问题?? 续!! 下拉菜单被flash挡住了,请高手帮忙! 我想让一个表单有多个提交按钮,进行不同的动作?怎么办呀? 有什么方法在jscript里把数值型数据转换为字符串型数据 有一组单选按钮(4个),如何在点击这组单选按钮中的另外一个按钮时知道之前选中的是那个按钮。 jquery easy ui的tree点击问题 做了一个tab标签式的网页 但是出错了 诚心请教大家一个换行符替换的js
<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>
可能你理解错了,是只要wrapInner的目标容器内有脚本,就会被执行两次
我是为了写一个jquery插件,不能限制别人body区域不能放脚本。
测试代码如下:
<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>
包裹前:
<body>
<div id="wrap">
其他内容
</div>
<script>
alert($);
</script>
</body>包裹后:
<body>
<div class='test'>
<div id="wrap">
其他内容
</div>
<script>
alert($);
</script>
</div>
</body>执行动态添加的<script>代码是jquery挺好的功能。
$(function(){
$('<\script>alert("zswang 路过")<\/script>').appendTo('body');
});
$(function(){
$("body>div").wrap("<div class='test'></div>");
});
如果DIV内部还有脚本呢?
何来非BUG一说?
虽然我觉得很合理,但是不是bug你可以找jquery作者讨论一下,超出了我控制的范围。解决的方案还有一种,就是先把script都移除掉,再wrap。
$("script").remove();