Я пытаюсь сделать объект перетаскиваемым с помощью Javascript. к счастью, мне удалось построить то, что я хотел. каждый раз, когда я запускаю код, я могу взять и перетащить объект примерно на 8/11 раз, после чего мой браузер начнет замерзать. Я пробовал использовать хром, Firefox и сафари, которые они замораживали примерно через 10 раз, когда собирали объект и оставляли его. Я пошел на сайт jquery, я убедился, что все функции используются правильно. Я не мог найти причин для того, что происходит. может ли кто-нибудь помочь?Как создать собственный перетаскиваемый скрипт
<html>
<head>
<script src='http://code.jquery.com/jquery-1.10.2.min.js'></script>
<style>
.draggable {
width:400px;
height:30px;
background-color:black;
position:absolute;
top:10px;
left:1px;
}
</style>
<script type='text/javascript'>
function moveobject() {
$(document).mousemove(function(event) {
$("#draggable1").css("top", event.pageY - plustop);
$("#draggable1").css("left", event.pageX - plusleft);
});
$("#draggable1").click(function() {
$(document).unbind();
$("#draggable1").click(moveobject);
});
}
$(document).ready(function() {
$("#draggable1").click(function() {
$("#draggable1").mousemove(function(e) {
var top = $("#draggable1").css("top");
var left = $("#draggable1").css("left");
top = top.replace("px", "");
left = left.replace("px", "");
plusleft = (e.pageX - left)
plustop = (e.pageY - top)
$(this).unbind("mousemove");
});
moveobject();
});
});
</script>
</head>
<body>
<div class='draggable' id='draggable1'></div>
</body>
</html>
Не могли бы вы объяснить мне, почему привязка nd unbinding приведет к нежелательному поведению? – user3072635
Хотя это можно сделать, я не уверен, что это должно быть сделано. Я не знаю, является ли скорость регистрации и отмены регистрации обработчиков событий тем, что действительно обещано быть особенно быстрым. Может быть, это неважно, я не знаю. Но просто использовать флаг в функции было бы намного быстрее (вместо того, чтобы манипулировать большими структурами данных, которые обрабатывают прослушиватели событий), и было бы легче отлаживать. В основном я обеспокоен тем, что вы динамически меняете код, а не состояние, в котором оно работает. – DrLivingston