1

我的页面中有一个元素,一旦双击其父级,它就可以编辑。所以像:

<div id="parent"><p class="editable"> enter text here </p></div>

当我将属性更改#parent为true时。dblclickedcontenteditable

现在的问题是,一旦 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,这对我来说是不可能的。

有谁知道如何解决这个问题?解决方案一定比我想的要容易,但我想我现在只是让自己感到困惑!

4

1 回答 1

1

jQuery UI .draggable() 和 .resizable() 有一个取消属性,包含的元素不应该触发拖动

http://jqueryui.com/demos/draggable/#option-cancel

只是这两个你需要忽略吗?

于 2012-08-23T16:13:27.393 回答