我的页面中有一个元素,一旦双击其父级,它就可以编辑。所以像:
<div id="parent"><p class="editable"> enter text here </p></div>
当我将属性更改#parent
为true时。dblclicked
contenteditable
现在的问题是,一旦 contenteditable 开启,有两件事会阻止用户编辑文本:1)父级绑定了很多事件和其他东西(包括可拖动和可调整大小)。如果我这样做unbind()
,这部分会得到解决(但我不想那样做!) 2)我还使用此代码来禁用页面中的文本选择:
function disableSelection(target){
if (typeof target.onselectstart!="undefined") //IE route
target.onselectstart=function(){return false}
else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
target.style.MozUserSelect="none"
else //All other route (ie: Opera)
target.onmousedown=function(){return false}
target.style.cursor = "default"
}
我尝试使用以下方法排除可编辑元素:
disableSelection($(":not(.editable)").get(0));
但它似乎禁用了页面中的所有内容。当我摆脱它时,它解决了问题的另一半。所以如果我想启用编辑,我必须从父级取消绑定所有事件,并且还要摆脱 disableSelection,这对我来说是不可能的。
有谁知道如何解决这个问题?解决方案一定比我想的要容易,但我想我现在只是让自己感到困惑!