나는 여기에있는 해결책을 시도했다 : How do I add a delay in a JavaScript loop? 그러나 나는 그것이 나를 위해 일하게 만들 수 없었다.For 루프에 지연 추가
jQuery.fn.createEntry = function() {
$("#List").append('<span>New Entry</span>');
$("#List span").draggable({ grid: [30,45] });
}
jQuery.fn.tenTimes = function() {
for (var i = 1; i <= 10; i++){
$(document).createEntry();
}
}
.createEntry() 스크립트에서 새 개체는 내가 가지고있는 .draggable() 플러그인에 바인딩됩니다. 이 단축키 함수()를 실행하기 위해 키보드 단축키 (keyup)를 사용하고 있습니다. 키를 두 번 이상 빠르게 누르면 많은 새 객체가 드래그되지 않습니다. 그것은 겉으로보기에는 무작위로 개체가 draggable되지 않습니다. 아마도 빠른 키 누름으로 인해 실패한 바인드 이벤트가 중단 될 것이라고 생각했지만, 느리게 진행될 경우 일부는 드래그 할 수 없게되었습니다.
for 루프로 이동하기 전에 개체가 제대로 바인딩되었는지 확인할 수있는 방법이 있습니까? 엄격한 접근 방법이 있습니까? 불행히도 이것은 애니메이션이 아니므로 .delay()를 사용할 수 없습니다.
해결책은 문제를 일으키는 것과 appendTo를 사용하여 요소를() 처리 내가가는했던 3 스크립트이었다.
append() 또는 appendTo()를 사용하면 객체를 드래그 가능으로 바인딩 된 상태로 유지하는 것처럼 보였지만 도중에 왼쪽/위로 CSS가 손실되어 드래그 할 수 없습니다. 일부 .css() 해킹 (각 값은 고유 한 값)을 알아 내기보다는 새 요소를 만든 다음 관련 데이터를 복사 한 다음 이전 데이터를 제거()합니다. Draggable은 다른 지점에서 제대로 바인딩됩니다. 이 문제는 해결되었습니다.
문제는 createEntry() 함수에있는 것 같습니다. –
'createEntry'를 게시 할 수 있습니까? –
@joeframbach - 함수를 추가했습니다. 매우 베어, 왜 내가 그것을 생략하지만 구문을 깨고있어 수 있습니다. –