Hvr*_*xld 4 html javascript css jquery drag-and-drop
如何在拖动元素时检测悬停/鼠标悬停/鼠标中心?用"drag"元素悬停后,我想要绿色框.那有什么解决方案吗?
注意:我知道我可以使用jQuery UI,但我想自己做.
$("box").mouseover(function() {
$(this).addClass("green");
var box = $(this).attr("id");
$("#result").html(box);
});
$("box").mouseleave(function() {
$(this).removeClass("green");
});
$("drag").bind({
mousedown: function() {
$(this).addClass("absolute");
},
mouseup: function() {
$(this).removeClass("absolute");
},
mousemove: function(e) {
$(this).css({
left: e.pageX - (50 / 2),
top: e.pageY - (50 / 2)
});
}
});
$("body").mousemove(function(event) {
$("#log").text("pageX: " + event.pageX + ", pageY: " + event.pageY);
});
Run Code Online (Sandbox Code Playgroud)
https://jsfiddle.net/38zecoL1/1/
感谢您的任何帮助.
我会尝试使用以下方法禁用拖动对象上的指针事件:pointer-events: none;.这样你就可以获得悬停物体的事件而不是拖动物体的事件.
但是你还需要适应move和mouseup事件不起作用的情况.你将不得不将它们绑定在别处(例如身体)
这个简短的例子并不完美,但是schuld会给你一个如何做得更好的提示;)
$("box").mouseover(function () {
$(this).addClass("green");
var box = $(this).attr("id");
$("#result").html(box);
});
$("box").mouseleave(function () {
$(this).removeClass("green");
});
$("#drag").bind({
mousedown : function (e) {
$(document.body).css({ 'user-select': 'none' })
var dragged = $(this);
dragged.css({
left : e.pageX - (50 / 2),
top : e.pageY - (50 / 2)
});
dragged.css({
'pointer-events' : 'none'
})
var upHandler = function () {
dragged.removeClass("absolute");
dragged.css({
'pointer-events' : 'all'
})
$(document.body).css({ 'user-select': 'initial' })
$("body").off('mouseup', upHandler);
$("body").off('mousemove', moveHandler);
}
var moveHandler = function (e) {
dragged.addClass("absolute");
dragged.css({
left : e.pageX - (50 / 2),
top : e.pageY - (50 / 2)
});
}
$("body").bind({
mouseup : upHandler,
mousemove : moveHandler
})
}
});
$("body").mousemove(function (event) {
$("#log").text("pageX: " + event.pageX + ", pageY: " + event.pageY);
});Run Code Online (Sandbox Code Playgroud)
box {
float: left;
width: 100px;
height: 100px;
background-color: red;
margin: 20px;
}
#log {
position: absolute;
top: 150px;
}
.green {
background-color: green;
}
#drag {
width: 50px;
height: 50px;
float: left;
background-color: blue;
}
#drag.absolute {
position: absolute;
}
html,
body {
width: 100%;
height: 100%;
}
* {
margin: 0;
padding: 0;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<box id="box1">
<div id="drag"></div>
</box>
<box id="box2"></box>
<div id="result"></div>
<div id="log"></div>Run Code Online (Sandbox Code Playgroud)
Irr*_*ech -2
如果你想拖动元素,我建议你使用这个 JS 库https://github.com/RubaXa/Sortable
有一个选项叫做
chosenClass: "sortable-chosen", // Class name for the chosen item
在这个课程中,您可以添加不同的颜色和您想要的一切。
但如果你想自己做这件事我现在不想
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |