如何使用较旧的jquery代码来使用较新版本的jquery?

时间:2009-07-26 17:57:04

标签: javascript jquery

相关: How do I run different versions of jQuery on the same page?


我有一个使用大量jquery的页面,我有一个拖放,也可以保存位置到mysql DB中。 我的jquery文件大约有2年了,今天我尝试使用更新的版本,因为我想要使用一个脚本,但它只适用于jquery过去一年中的新版本。

在我放入较新版本的jquery之后,我的拖放操作不起作用,除了我的拖放代码之外,其他所有内容都在我的页面上工作。它部分有效。

我的页面有2列,您可以在2个列中拖动项目,但现在它只拖动左栏,右栏中的项目不会移动。

左列中的移动项目将无法找到放置的位置,因此释放项目将丢失。我的代码的ajax部分仍在工作,因为当我“丢失”某个项目时,它会更新数据库,并且该页面上的项目列表中将缺少项目ID号。

如何让旧的jquery代码生效?

这是我的代码

<script>
var _x;
var _y;
var _pos;
if(document.all){document.body.onload=b_onload;}
else{document.body.setAttribute("onload","b_onload()");}
function b_onload(){
    $('#columns td.portlet_td').each(function(i){
        $(this).children("br").remove();
    });
    $('#columns td.portlet_td').Sortable(
        {
            accept: 'portlet',
            helperclass: 'sort_placeholder',
            activeclass :   'sortableactive',
            opacity: 0.7,
            tolerance: 'touch',
            handle:'.drag-handler',

            onStop:function(){

                var x = getPos();

                if(!$("#lgif").get(0)){
                    $('<i'+'mg id="lgif" src="images/loading.gif" style="display:block;position:absolute;top:500px;left:50%;" />').appendTo('body');
                }

                var __top = (document.body && document.body.scrollTop)?(document.body.scrollTop):((document.documentElement && document.documentElement.scrollTop)? document.documentElement.scrollTop: 0);

                $("#lgif").css({top:__top+'px'});

                $("#lgif").show();
$.getJSON(
    '/member/beta/saveposition.php',
    {
        uid:(USER.ID),
        position:x
    },
    function(json){
        $("#lgif").hide();
    }
);
            }
        }
    );



};
function resetPos(){
    $.getJSON(
        '/member/beta/saveposition.php',
        {
            uid:(USER.ID),
            position:"0:0|0:1|0:2|0:3|0:4|0:5|0:6|1:7|1:8|1:9|1:10|1:11|1:12|1:13|1:14|1:15|1:16|"
        },
        function(json){
            $("#lgif").hide();
        }
    );
}
function getPos(){
    _pos="";
    $('#columns td.portlet_td').each(function(i){
        _x=i;
        $(this).children(".portlet").each(function(j){
            _y=j;
            var index = this.getAttribute("id").split('id')[1] - 100;
            var pos=_x+":"+index;
            _pos+=pos+"|";
        });
    });
    return _pos;
}
</script>

还请注意我的jquery版本正常工作需要另一个名为interface的文件,这个接口文件不适用于新的jquery版本,所以也许新的jquery需要添加其他东西才能拖放工作?

1 个答案:

答案 0 :(得分:1)

由于您从未说过在使用JQuery时使用的是什么版本的JQuery,因此我们没有参考资料来了解自那时起实际发生了多少变化。最好的办法就是重写它,自从任何旧版本的JQuery以来发生了很长的变化列表。