2010-05-26 3 views
1

Если построить простой Dragger:JQuery перетаскиваемых бросают ошибку, когда «MouseUp» срабатывает

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

И вы пытаетесь остановить его программно:

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

Вы получите это сообщение в консоли ошибок :

this.helper является нулевым

Есть ли способ исправить это? Спасибо за помощь.

+0

ли вы когда-нибудь решить это успешно? Вам все еще нужна помощь? – jcolebrand

ответ

0

Похоже, вы просто пытаетесь сдержать движение по перетаскиваемому элементу, это правильно? Вы видели эту страницу: http://jqueryui.com/demos/draggable/#constrain-movement

EDIT

Как об этом вместо того, чтобы затем: (пример страницы, делает то, что вы просите - помнить о месте включения 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> 
+0

Спасибо drachenstern, но этого я не пытаюсь достичь. Я просто хочу остановить перетаскиваемый объект, когда определенное значение достигнуто, но не имеет ничего общего с ограничением. В любом случае, спасибо за ваш совет. – Moustard

Смежные вопросы