각 열에 숫자가 할당 된 격자를 만들었습니다. draggable div를 각 열의 경계에 맞추기 위해 기본적으로 div가 찍은 가장 바깥 쪽 열의 범위를 표시하고 싶습니다.Jquery 드래그 가능 스냅을 가장 바깥 쪽 요소에만 적용
예는 여기에 있습니다 :이 질문에서 촬영 https://jsfiddle.net/Cataras/dpdLLcft/
$(function() {
$(".draggable").draggable({
snap: ".hour-full, .hour-half",
snapMode: 'both',
stop: function(event, ui) {
/* Get the possible snap targets: */
var snapped = $(this).data('ui-draggable').snapElements;
/* Pull out only the snap targets that are "snapping": */
var snappedTo = $.map(snapped, function(element) {
return element.snapping ? element.item : null;
});
/* Display the results: */
var result = '';
$.each(snappedTo, function(idx, item) {
result += $(item).text() + ", ";
});
$("#results").html("Snapped to: " + (result === '' ? "Nothing!" : result));
}
});
});
코드 : 그러나 How to find out about the "snapped to" element for jQuery UI draggable elements on snap
, 또한에만 열 왼쪽에 번호와 사업부의 오른쪽하지만 표시되지 않습니다 그 사이에있는 모든 열. 그리고 때로는 빨간색 막대가 분명히 만지지도 않는 오른쪽 옆의 것들도 있습니다. 어떤 제안?
나는이 중재를 draggable 및 droppables를 사용하여 만드는 것이 더 좋을 것이라고 생각합니다. –
'snapTolerance' 조정은 스냅을 덜 탐욕스럽게 만드는 것 같습니다. 그것은 여전히 당신이 원하는 것보다 훨씬 더 많은 요소들에 짤깍 소리를 내고 있습니다. 두 가지 유형의 요소 인'.hour-full, .hour-half'에 스냅 할 수 있기 때문에 두 가지 요소에 모두 맞춰 설정됩니다. 예를 들어, 2와 5 사이에 떨어 뜨리면 1,2,3,4,5,6이됩니다. 왜냐하면 기술적으로 '모두'모드이기 때문에 한꺼번에 모든 것을 물리 치기 때문입니다. 제 생각에 당신은 그것이 멈추었을 때의 위치 대 그것의 위치에 기초하여 그것을 맵핑해야한다고 생각합니다. – Twisty