一个元素的拖拽功能(附录:添加卡片分类)

可以同时设置 dragstart、dragend 和 dragover、dragleave、drop 这两类事件

被拖动元素(设置 draggable="true")触发:

dragstart - 拖动开始

drag - 拖动过程中持续触发

dragend - 拖动结束(无论是否成功放置)

放置目标元素触发:

dragenter - 被拖动元素进入

dragover - 在被拖动元素上方移动

dragleave - 被拖动元素离开

drop - 在被拖动元素上释放


使其既能被拖动又能接收其他拖动元素。


备份:

添加卡片分类

//初始化代码块

function initCodeBlocks() {

需要改的地方(允许子容器的):

//添加代码块到画布 - 且同步添加到全局对象中

function addCodeBlockToArea(blockType, x, y, parent = '#programmingArea') {

// 将代码块添加到全局对象中,这里应该要放置到指定id的代码块对象中,如果没有才是全局对象中 需要 cardId cardChildBox cardChildBoxIndex 设置

// 注意这里没有多级嵌套

if(globalState.cardId){

//删除全局对象中的某个卡片

function removeBlockFromState(element, blockId) {

//特殊卡片事件 点击if添加按钮 if elseif else

//添加 如果 中删添加钮的事件

if(blockData.type == 'if' || blockData.type == 'ifelse' || blockData.type == 'ifelseifelse'){

//3.逻辑控制卡片需要添加对象的子卡片(展示)

if(blockData.type == 'if' || blockData.type == 'ifelse' || blockData.type == 'ifelseifelse'){

//4.对于需要支持卡片放置的卡片,添加对应的拖拽事件支持

if(blockData.type == 'if' || blockData.type == 'ifelse' || blockData.type == 'ifelseifelse'){

用于修改属性

$('body').on('change', 'input', function() {

$('body').on('input', 'textarea', function() {

$('body').on('click', 'select', function() {

执行代码(code).then(responses => {

    try {

showOutput('执行成功', responses, 'success');

} catch (error) {

showOutput('执行错误', error.message, 'error');

}

}).catch(error => {

    alert('代码执行失败');

})

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容