触发'mouseup'时jquery draggable throws错误

时间:2010-05-26 19:34:38

标签: jquery-ui

如果您构建一个简单的拖动器:

$(document).ready(function(){
  $('#tomove').draggable({
    axis: 'x',
    drag: function(event, ui) {
      mouseUp();
    }
  });
});

你试图以编程方式停止它:

function mouseUp() {
  if($('#tomove').offset().left > 400) {
    $('#tomove').trigger('mouseup');
  }
}

您将在错误控制台中收到此消息:

  

this.helper为空

有什么方法可以解决这个问题吗? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

看起来你只是试图限制可拖动元素上的移动,这是正确的吗?您是否看过此页面:http://jqueryui.com/demos/draggable/#constrain-movement

修改

然后呢:(示例页面,做你要问的 - 注意jquery包含位置)

另请注意,我将方法的名称更改为更合适的内容。这不会阻止用户向左拖动。如果他们达到400(或其他墙壁),我认为你不想实际阻止它们。

如果你想这样做,你只需要$('#element').draggable('destroy')

<html>
    <head>
        <title>Draggable jQuery-UI Width Block</title>
        <script src="jquery-1.4.2.min.js" ></script>
        <script src="jquery-ui-1.8.1.custom.min.js" ></script>
    </head>
    <body>
        <div id="tomove" style="width:100px;height:20px;background:silver;">
            <span>some text</span>
        </div>
        <script>
        $(document).ready( function() {
            $('#tomove').draggable({
                axis:   'x',
                drag: function(event, ui) {
                    dragBlock( ui );
                }
            });
        });
        function dragBlock( ui ) {
            if( ui.position.left > 400 ) {
                ui.position.left = '400px';
            }
            if( ui.position.left < 0 ) {
                ui.position.left = '0px';
            }
        }
        </script>
    </body>
</html>