Javascript 附「;“dragstart”;事件到";“鼠标”;获得可拖动的经验

Javascript 附「;“dragstart”;事件到";“鼠标”;获得可拖动的经验,javascript,jquery,drag-and-drop,draggable,drag,Javascript,Jquery,Drag And Drop,Draggable,Drag,正在寻找在“mouseup”事件后拖动元素的解决方案 正如您所知,当它接收到“mousedown”和“mousemove”事件时,就会发生拖动 如何通过“mouseup”事件实现拖动?(何时实现单击) 您可以始终使用$('.box')。on('click',函数(e){方法……这可能会成功,但请记住,您必须添加另一个on click或doubleclick来禁用,而且,这是一种非常奇怪的行为 我的意思的示例解释 // Implement drag and drop for the image

正在寻找在“mouseup”事件后拖动元素的解决方案

正如您所知,当它接收到“mousedown”和“mousemove”事件时,就会发生拖动

如何通过“mouseup”事件实现拖动?(何时实现单击)


您可以始终使用
$('.box')。on('click',函数(e){
方法……这可能会成功,但请记住,您必须添加另一个on click或doubleclick来禁用,而且,这是一种非常奇怪的行为

我的意思的示例解释

// Implement drag and drop for the image
$('.box').on('click', function(e) {
  var $this = $(this),
      $window = $(window),
      mouseX = e.pageX,
      mouseY = e.pageY,
      width = $this.outerWidth(),
      height = $this.outerHeight()
      elemX = $this.offset().left + width - mouseX,
      elemY = $this.offset().top + height - mouseY;

  e.preventDefault();
  $window.on('mousemove.drag', function(e2) {
      $this.offset({
          left: e2.pageX + elemX - width,
          top: e2.pageY + elemY - height
      });
  }).one('mousedown', function() {
      $window.off('mousemove.drag');
  });
});
但我会这样做

// Implement drag and drop for the image
$('.box').on('mousedown', function(e) {
  var $this = $(this),
      $window = $(window),
      mouseX = e.pageX,
      mouseY = e.pageY,
      width = $this.outerWidth(),
      height = $this.outerHeight()
      elemX = $this.offset().left + width - mouseX,
      elemY = $this.offset().top + height - mouseY;

  e.preventDefault();
  $window.on('mousemove.drag', function(e2) {
      $this.offset({
          left: e2.pageX + elemX - width,
          top: e2.pageY + elemY - height
      });
  }).one('click', function() {
      $window.off('mousemove.drag');
  });
});

您可以始终使用
$('.box')。on('click',函数(e){
方法……这可能会成功,但请记住,您必须添加另一个on click或doubleclick来禁用,而且,这是一种非常奇怪的行为

我的意思的示例解释

// Implement drag and drop for the image
$('.box').on('click', function(e) {
  var $this = $(this),
      $window = $(window),
      mouseX = e.pageX,
      mouseY = e.pageY,
      width = $this.outerWidth(),
      height = $this.outerHeight()
      elemX = $this.offset().left + width - mouseX,
      elemY = $this.offset().top + height - mouseY;

  e.preventDefault();
  $window.on('mousemove.drag', function(e2) {
      $this.offset({
          left: e2.pageX + elemX - width,
          top: e2.pageY + elemY - height
      });
  }).one('mousedown', function() {
      $window.off('mousemove.drag');
  });
});
但我会这样做

// Implement drag and drop for the image
$('.box').on('mousedown', function(e) {
  var $this = $(this),
      $window = $(window),
      mouseX = e.pageX,
      mouseY = e.pageY,
      width = $this.outerWidth(),
      height = $this.outerHeight()
      elemX = $this.offset().left + width - mouseX,
      elemY = $this.offset().top + height - mouseY;

  e.preventDefault();
  $window.on('mousemove.drag', function(e2) {
      $this.offset({
          left: e2.pageX + elemX - width,
          top: e2.pageY + elemY - height
      });
  }).one('click', function() {
      $window.off('mousemove.drag');
  });
});

问题是为什么?这对大多数用户来说都是意外的行为,你会如何停止拖动?我会在“mousedown”上停止拖动。但当鼠标再次释放时,只需单击鼠标,拖动就会重新启动。除非按下鼠标按钮,否则让某些东西始终可拖动似乎很奇怪。这似乎是重复的:该问题答案中的解决方案对我有效。可能重复的问题是为什么?对于大多数用户来说,这是意外的行为rs,你怎么才能停止拖拉?我会停止拖拉“鼠标向下”。但当鼠标再次释放时,只需单击鼠标,拖动功能就会重新启动。除非按下鼠标按钮,否则,让某些东西始终可以拖动似乎很奇怪。这似乎是重复的:该问题答案中的解决方案对我起到了作用。可能是重复的