jsfiddle 链接。
我希望当mousedown
事件触发时#flyingDiv
我可以将它移动到 a 周围#holder
,当mouseup
鼠标离开时#holer
我无法移动它。在我的代码#flyingDiv
中,当我将鼠标移到#holder
.
HTML:
<div id="holder" style="position: relative; margin: 20px auto; border: 1px solid black; width: 400px !important; height: 400px !important;">
<div id="flyingDiv" style="position: absolute; background-color: green; width: 10px !important; height: 10px !important; left: 195px; top: 195px;"></div>
</div>
Javascript:
$(function(){
var fd = $("#flyingDiv");
$("#flyingDiv").bind("mousedown", function(event) {
$(this).attr("pressed", true);
});
$("#holder").bind("mouseup", function(event) {
$("#flyingDiv").removeAttr("pressed");
});
$("#holder").bind("mousemove", function(event) {
var div = $("#flyingDiv");
if (div.attr("pressed")) {
var width = div.width();
if (event.offsetX >= width / 2 && ($(this).width() - event.offsetX) >= width / 2) {
div.css("left", parseInt(event.offsetX - width / 2) + "px");
}
var height = div.height();
if (event.offsetY >= height / 2 && ($(this).height() - event.offsetY) >= width / 2) {
div.css("top", parseInt(event.offsetY - height / 2) + "px");
}
}
});
});
UPD
我发现如果event.eventPhase == 3
它是旧事件。链接
但是代码仍然运行不快。