C# 保留拖动位置不起作用:jQuery draggable:position()

C# 保留拖动位置不起作用:jQuery draggable:position(),c#,jquery,asp.net,.net,jquery-ui,C#,Jquery,Asp.net,.net,Jquery Ui,我有下面的代码,它将存储div在移动时的坐标位置。这些位置被存储到数据库中,这样当用户返回时,它就保持在那里。以下代码的工作原理与此类似。但当我做两到三个动作时,位置并没有准确地保持 注意:我认为问题在于以下代码行 //var absolutePositionLeft = (ui.originalPosition.left) + (ui.offset.left); //var absolutePositionTop = (ui.originalPosition.top) + (ui.offset

我有下面的代码,它将存储div在移动时的坐标位置。这些位置被存储到数据库中,这样当用户返回时,它就保持在那里。以下代码的工作原理与此类似。但当我做两到三个动作时,位置并没有准确地保持

注意:我认为问题在于以下代码行

//var absolutePositionLeft = (ui.originalPosition.left) + (ui.offset.left);
//var absolutePositionTop = (ui.originalPosition.top) + (ui.offset.top);

var stopPositions = $(this).position();
var absolutePositionLeft = stopPositions.left;
var absolutePositionTop = stopPositions.top;
注意:当我使用
var absolutePositionLeft=ui.absolutePosition.left时,出现错误“Microsoft JScript运行时错误:'absolutePosition.left'为null或不是对象”;

你能建议如何克服这个问题吗

守则:

<head runat="server">

<title></title>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>

<script type="text/javascript">

    $(function () {

        $("#<%=dImage.ClientID%>").draggable(
        {

            drag: function (event, ui) {
                //when dragging
                $("#<%=dImage.ClientID%>").css("opacity", "0.3");
            },

            stop: function (event, ui) {
                //when stopped

                //showAlert();

                debugger;

                //var absolutePositionLeft = (ui.originalPosition.left) + (ui.offset.left);
                //var absolutePositionTop = (ui.originalPosition.top) + (ui.offset.top);

                var stopPositions = $(this).position();

                var absolutePositionLeft = stopPositions.left;
                var absolutePositionTop = stopPositions.top;

                var elementName = ui.helper.attr('id');
                saveCoords(absolutePositionLeft, absolutePositionTop, elementName);

                $("#<%=dImage.ClientID%>").css("opacity", "1.0");
            },

            cursor: "move"

        });

    });

    function showAlert() 
    {
        alert("hai"); 
    }  

    function saveCoords(x, y, el, id) 
    {

        $.ajax({

            type: "POST",
            url: "GridViewHighlightTEST.aspx/SaveCoords",
            data: "{x: '" + x + "', y: '" + y + "', element: '" + el + "', userid: '1'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) 
                     {
                       if (response.d != '1') 
                        {
                            alert('Not Saved!');
                        }

                    },
            error: function (response) 
                   {
                    alert(response.responseText);
                   }
        });

    }


</script>

我相信你的问题是

var stopPositions = $(this).position();
应该是

var stopPositions = $(event.target).position();
在任何情况下,使用JavaScript调试器都是非常有用的,它将使您保持清醒。如果您使用的是Chrome或IE,请使用F12获取开发人员工具。如果您正在使用Firefox,请获取


使用其中一个工具可以帮助您快速验证此实际上是什么,这取决于您使用的框架,可能会很快变得混乱。调试器还可以帮助您验证DOM和代码流。

您的代码确实显示了带有
var absolutePositionLeft=ui.absolutePosition.left嗯,“ui”对象没有“absolutePosition”属性。仅“原始位置”(拖动前的位置)和“位置”(拖动后的位置)属性。抱歉。这不是问题所在。那么什么不起作用呢?得到相应的证据?拯救他们?你在用它们吗?考虑使用<代码> ui.Posial.Le/UI.Posial.Wrror < /Cord>以获得拖动元素的位置,而不是调用.Posits()。var stopPositions=$(this.position();var absolutePositionLeft=停止位置.left;var absolutePositionTop=stopPositions.top;
var stopPositions = $(event.target).position();