javascript - 切换光标以显示我可以放置元素的位置

标签 javascript jquery html jquery-ui

我有一个非常明显的问题/任务,我仍然想知道为什么我找不到解决方案...

在使用 jQuery UI 的 JavaScript 应用程序中,我使用了 draggable()droppable()能够移动元素的 API。这可以直接按预期工作。
但现在我想更改鼠标光标,使其显示可以放置元素的位置 ( cursor: "copy" ) 或不可能放置元素的位置 ( cursor: "no-drop")。

这应该 - 当然 - 只在拖动期间发生,否则应该显示正常光标。

注意:可以假设只有在一个特殊的 <div> 中才允许掉落。 (例如,由 idclass 标识)和其他任何地方都不允许放置。

最佳答案

您可以在拖动时使用 start 将可拖动对象的光标样式设置为 no-drop使用 css() 的事件回调方法,当它超过 over 内的可放置对象时,将其更改为 copy事件回调。

一旦 draggable 离开 droppable,您可以在 out 中将光标恢复为 no-drop事件回调,并通过在 stop 中将 CSS cursor 属性值设置为 initial 将其重置为默认光标draggable的事件回调如下图:

$(function() {
  $("#draggable").draggable({
    start: function(event,ui){
     $(this).css("cursor", "no-drop");
    },
    stop: function(event,ui){
     $(this).css("cursor", "initial");
    }
  });
  $("#droppable").droppable({
    over: function(event, ui) {
      ui.draggable.css("cursor", "copy");
    },
    out: function(event, ui) {
      ui.draggable.css("cursor", "no-drop");
    }
  });
});
div {
  display: inline-block;
  margin: 20px;
  text-align: center;
}
#draggable {
  width: 50px;
  height: 50px;
  line-height: 50px;
  background: dodgerblue;
}
#droppable {
  width: 100px;
  height: 100px;
  line-height: 100px;
  background: hotpink;
}
<link href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<div id="draggable">
  <span>Drag</span>
</div>

<div id="droppable">
  <span>Drop here</span>
</div>

关于javascript - 切换光标以显示我可以放置元素的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27071807/

相关文章:

javascript - 让 javascript 决定是链接到内部还是外部网址

javascript - 通过 .load 加载的 JavaScript 是否会在 "deleted"之后运行?

javascript - 如何删除条形图中的旧数据

javascript - 为jsp中的每个循环获取内部隐藏字段的值

javascript - 焦点改变时不隐藏下拉菜单

html - 如何在 react 中管理表单内输入字段的颜色?

javascript - 有没有办法使用样式化的组件有条件地更改组件的类型?

javascript - 在 Node 6 中使用 crypto.pbkdf2Sync 返回与 Node 4 不同的哈希值

javascript - 未捕获错误 : You should not use <Switch> outside a <Router>, 但开关在里面

php - WordPress 永久链接重写用于在 URL 中使用父项和子项层次结构的自定义分类和帖子类型