[英]mouseup is not fired after mousedown
mouseup 在 mousedown 后不会被激活。 我不知道为什么。 但是如果我取消注释该行
$(this).replaceWith("<div class=" + "'" + $canvas.replace(".", " ") + "'" + "></div>");
然后 mouseup 正常工作。 这是一段代码
var onmousemove = function ($canvas) {
// Painting the map with canvas
$map_canvas.mousedown(function () {
var ignoreMouseMove = false;
mouseDownFired = true;
$(".map .row div").mousemove(function (e) {
if (ignoreMouseMove) return;
//$(this).replaceWith("<div class=" + "'" + $canvas.replace(".", " ") + "'" + "></div>");
moveCanvas($canvas, e)
}).mouseup(function () {
ignoreMouseMove = true;
});
});
var paletteClone = $(document).clone(true); // bound handler for .palette div
};
var moveCanvas = function ($canvas, e) {
$(".map ul li." + $canvas).offset({
left: e.pageX - 30,
top: e.pageY - 30
});
};
您将mouseup
事件绑定到一个 DOM 元素,然后在mousemove
事件中替换该元素 - mouseup
事件无法运行,因为该元素不再位于页面上。
另一种方法是使用.map .row
的父级使用on
函数绑定mouseup
事件 - 这将事件绑定到父级,因此添加的元素仍然获得您期望的行为。
var onmousemove = function ($canvas) {
// Painting the map with canvas
$map_canvas.mousedown(function () {
var ignoreMouseMove = false;
mouseDownFired = true;
$(".map .row").on("mousemove", "div", (function (e) {
if (ignoreMouseMove) return;
// this is now OK - event bound to parent
$(this).replaceWith("<div class=" + "'" + $canvas.replace(".", " ") + "'" + "></div>");
moveCanvas($canvas, e)
}).on("mouseup", "div", function () {
ignoreMouseMove = true;
});
});
var paletteClone = $(document).clone(true); // bound handler for .palette div
};
var moveCanvas = function ($canvas, e) {
$(".map ul li." + $canvas).offset({
left: e.pageX - 30,
top: e.pageY - 30
});
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.