: 아래와 같은
내 앱 보인다
function setDragOfElementOnAnother ($draggableElement, $draggedElememnt, allowDragPredicate) {
var stopDragFunction = function() {
$draggedElememnt.data("drag", false);
$draggedElememnt.removeData("startPoint");
$("html, body").unbind("mouseup.drag");
$("html, body").unbind("mousemove.drag");
};
var dragFunction = function(e) {
if (!parseBoolean($draggedElememnt.data("drag")))
return;
var begin = $draggedElememnt.data("startPoint");
$draggedElememnt.css({ left: e.clientX - begin.x, top: e.clientY - begin.y });
};
$draggableElement.mousedown(function(e) {
if ((e.clientX - $(this).offset().left < 0 || $(this).offset().left + $(this).width() < e.clientX) ||
e.clientY - $(this).offset().top < 0)
return;
if (allowDragPredicate && !allowDragPredicate(e))
return;
$draggedElememnt.data("drag", true);
$draggedElememnt.data("startPoint", Point(e.clientX - $(this).offset().left, e.clientY - $(this).offset().top));
$("html, body").bind("mouseup.drag", stopDragFunction);
$("html, body").bind("mousemove.drag", dragFunction);
});
$draggableElement.mouseup(stopDragFunction);
$draggableElement.mousemove(dragFunction);
}
이 기능은 다른을 사용하여 하나의 요소에서 드래그 선언하는 데 사용됩니다.
전제 : 1 드래그 된 소자의 위치가 고정 또는 절대 (상대 해야 또한 작동) 될 하나 갖는다. (2) jQuery.
드래그 한 요소와 드래그 할 수있는 요소를 같은 것으로 지정하면 요소를 누르고 마우스를 움직이면 요소가 드래그됩니다.
'allowDragPredicate'변수는 선택 사항이며 경계를 만드는 데 유용합니다.
편집 : 잊어 버렸습니다.
function Point(xVal, yVal) {
if (xVal === undefined) {
xVal = 0;
}
if (yVal === undefined) {
yVal = 0;
}
return {
x: xVal,
y: yVal
};
}
EDIT 2 : : 그리고
function parseBoolean(str) {
if (str === true)
return true;
if (str)
return /^true$/i.test(str);
return false;
}
EDIT 3 : 또한 코드를 추가하고, 간단한 jsFiddle 예를 첨가.
@ 어쩌면 내가 어딘가 잘못 됐어, 내가 어디를 떠날 지 말 해주세요. 나는 jquery를 포함하여 스크립트 태그 안에 코드를 복사하고 매개 변수로 전달했습니다. (elem, elem, allowPredicate (왼쪽 그대로))' 'elem'은'var elem = document.getElementById ("draggingDiv")'로 생성됩니다. –
함수는 언제 호출됩니까? 이벤트를 지정해야합니까? –
($ (elem), $ (elem), allowPredicate (왼쪽 그대로))로 함수를 호출하십시오. 이벤트는 함수 안에 등록되어 있으므로 초기화시 호출하십시오. – EZSlaver