在各位大牛的帮助下解决了jquery对div从新排列的问题http://bbs.csdn.net/topics/390356285?page=1#post-393560524
现在遇到另一个问题。我后台是用php处理数据,然后前端用jquery的load方法来加载这个php到span上
前端html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script src="jquery.js" type="text/javascript"></script>
    <script>
$(document).ready(function(){
$('#loading').load('后台处理数据的.php');
})
</script>
<script type="text/javascript">
        window.onload = function () {
            var divTestJQ = $("#divContainer"); //取得容器对象
            var divJQ = $(">div.divframe", divTestJQ); //取容器需要重排的对象
            var EntityList = []; //定义一个数组用于存放要排序的对象
            divJQ.each(function () {
                var thisJQ = $(this);
                EntityList.push({ Name: parseInt(thisJQ.attr("name"), 10), JQ: thisJQ }); //把要排序的对象和排序的值一起放到一个新的对象里,并存入到数组
            });
EntityList.sort(function (a, b) { //利用数组的排序方法重新排序对象
return a.Name - b.Name; //从小到大
            });
            for (var i = 0; i < EntityList.length; i++) {
                EntityList[i].JQ.appendTo(divTestJQ); //把排序完的对象重新插入到容器对象
            };
        };
    </script> <style type="text/css">
.divframe{
padding:10px;margin:5px;border:1px solid #ccc;
}
</style>
</head>
<body>
<span id="loading"></span>
</body>
</html>后台页面假设已经处理完成,得到了这个<div id="divContainer">
<div name='1358988132' class = 'divframe'>1<br>
<div style = 'padding:10px;margin:5px;border:1px solid #ccc'>1</div>
</div>
<div name='1358968219' class = 'divframe'>2<br><div style = 'padding:10px;margin:5px;border:1px solid #ccc'>2</div>
</div>
<div name='1355785403' class = 'divframe'>3<br>
<div style = 'padding:10px;margin:5px;border:1px solid #ccc'>3</div>
</div>
<div name='1355630287' class = 'divframe'>4<br>
<div style = 'padding:10px;margin:5px;border:1px solid #ccc'>4</div>
</div>
<div name='1347463733' class = 'divframe'>19 <br>
<div style = 'padding:10px;margin:5px;border:1px solid #ccc'>19</div>
</div>
<div name='1347299717' class = 'divframe'>20<br>
<div style = 'padding:10px;margin:5px;border:1px solid #ccc'>20</div>
</div>
</div>正确的话会对所有的div倒过来排序。
由于要等load完成才去排序,所以排序算法用了window.onload
在本地测试完全没有问题。但是一放到服务器上就有问题了。20次只有一次能排序成功,其他怎么刷新都看不到效果。服务器上已经放置了jquery.js.弄了一下午才找到原因,实在是没辙了。

解决方案 »

  1.   

    我在前端的span前放了一个按钮,然后在排序的js上加一句按钮按下后执行
    放到服务器上,按下按钮后成功排序
    但是我总不能每次都叫用户去按一下那个按钮吧
      

  2.   

    试试看$(document).ready(function() {
        $('#loading').load('后台处理数据的.php',
        function() { //load完成后回调函数            
            var divTestJQ = $("#divContainer"); //取得容器对象             
            var divJQ = $(">div.divframe", divTestJQ); //取容器需要重排的对象             
            var EntityList = []; //定义一个数组用于存放要排序的对象             
            divJQ.each(function() {
                var thisJQ = $(this);
                EntityList.push({
                    Name: parseInt(thisJQ.attr("name"), 10),
                    JQ: thisJQ
                }); //把要排序的对象和排序的值一起放到一个新的对象里,并存入到数组
            });
            EntityList.sort(function(a, b) { //利用数组的排序方法重新排序对象                 
                return a.Name - b.Name; //从小到大             
            });
            for (var i = 0; i < EntityList.length; i++) {
                EntityList[i].JQ.appendTo(divTestJQ); //把排序完的对象重新插入到容器对象             
            })
        });