实现这么一个效果:
点击图片会在右上角生成一个叉号,然后点击叉号可以删除 canvas 里面的元素
问题是:
我点击叉号,图片不会删除只会删除叉号,当我再点击其他区域图片就删除了,求解是什么原因
库:
fabricjs
借鉴的方法:dome
我的代码:
由于项目代码比较多,我取了重要的实现部分
(function() {
var currentElement,
currentCanvas,
FN = {
start: function () {
this.addPage()
this.initEvent()
},
...,
initEvent: function () {
...
jQuery(document).on('click', ".deleteBtn", function() {
if (canvas.getActiveObject()) {
canvas.remove(canvas.getActiveObject())
jQuery(this).remove()
jQuery(".deleteBtn").remove()
}
})
},
...,
setDeleteBtn: function(e) {
$(".deleteBtn").remove()
if(!e.target) return
var left = e.target.aCoords.tr.x - 13,
top = e.target.aCoords.tr.y - 28,
deleteBtn = '<p class="deleteBtn" \
title="删除" \
style="position:absolute; \
top:' + top + 'px; \
left:' + left + 'px; \
zIndex: 9999; \
background-color: rgba(0,0,0,.7); \
color: #fff; \
text-align: center; \
line-height: 25px; \
width: 25px; \
height: 25px; \
border-radius: 50%; \
cursor:pointer">✕</p>'
$(".canvas-container").append(deleteBtn)
},
addPage: function () {
...
canvas.on({
'object:selected': function (e) {
currentElement = e.target
currentCanvas = c
FN.setDeleteBtn(e)
}
)}
}
}
FN.start()
})()
我来抛砖引玉一下吧。
看你的问题描述,感觉你应该是写的点击删除当前对象,你把代码改成图片和X在同一个父元素里面,给X绑定点击事件,删除当前父元素这种。