我知道类似的问题已经在堆栈上得到了回答,但由于某种原因,他们的解决方案对我不起作用。我正在尝试创建一个简单的拖放游戏/活动。用户只能尝试一次拖动元素,因此如果拖动一次我想删除关联的拖动事件侦听器。希望这是有道理的。这是代码:
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>
在 init 函数中,我将事件侦听器添加到稍后要拖动的元素中。
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);}
}
init()
**** 框、状态和列是在函数外部定义和声明的数组
比在处理删除元素的函数中我有以下代码
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:
为什么我的代码不起作用?