비슷한 질문이 스택에 이미 대답되어 있지만 어떤 이유로 그 해결책이 나를 위해 작동하지 않는다는 것을 알고 있습니다. 간단한 드래그 앤 드롭 게임/활동을 만들려고합니다. 사용자는 요소를 드래그 할 수있는 시도를 한 번만 가질 수 있으므로 드래그 한 경우 관련된 드래그 이벤트 리스너를 제거하려고합니다. 그것이 의미가 있기를 바랍니다. 내가 나중에 드래그 할 요소에 이벤트 리스너를 추가하고 init 함수에서이벤트 리스너가 제거되지 않습니다. 왜?
HTML
<div id="boxes">
<div id="b1" class="box" draggable="true"><header>Vacuum Tubes</header></div>
<div id="b2" class="box" draggable="true"><header> Eniac</header></div>
<div id="b3" class="box" draggable="true"><header> Transistors </header> </div>
<div id="b4" class="box" draggable="true"><header> Integrated Cicuits</header> </div>
<div id="b5" class="box" draggable="true"><header> Microprocessor </header> </div>
</div>
: 그리고 여기에 코드입니다.
function init(){
cols = document.querySelectorAll('#boxes div.box');
[].forEach.call(cols, function(col) {
boxes.push(col);
states.push("false");
col.addEventListener('dragstart', handleDragStart, false);
col.addEventListener('dragend', handleDragEnd, false);}
}
* * 상자, 국가와 COLS 내가 다음 코드
를 가지고있는 요소의 낙하를 처리하는 기능에서보다 초기화() 함수외부에서 정의와 선언 배열 인
dragSrcEl.removeEventListener('dragstart', handleDragStart, false);
dragSrcEl.removeEventListener('dragend', handleDragEnd, false);
cols[i].removeEventListener('dragstart', handleDragStart, false);
cols[i].removeEventListener('dragend', handleDragEnd, false);
cols[i].draggable=false;
dragSrcEl.draggable=false;
그래서 나는이 요소가 세 가지 다른 방법으로 끌리는 것을 막으려하고 있습니다. 그리고 여전히 작동하지 않습니다. 사용자는 여전히 요소를 드래그 할 수 있습니다. 내 질문 1 : 어떻게 'dragstart'및 'dragend'이벤트 수신기를 제거 할 수 있습니까? 내 질문 2 : 왜 내 코드가 작동하지 않습니까?
도움에 감사드립니다. J
jsfiddle을 제공 할 수 있습니까? –
이전에는 사용 해본 적이 없기 때문에 내가 올바르게했기를 바랍니다. http://jsfiddle.net/3qCm6/1/ –