2010-12-09 120 views
1

我有以下HTML。只有点击触发了contenteditable div才能执行操作

基本上它是一个文本文本的内容添加div。

另外在div是两个其他用户可以点击的div。

<div class="test" contenteditable="true">Text 
    <div class="color-picker"> 
    <img src="/style/icons/color_swatch.png" alt="Color picker" title="Pick a color"> 
    </div> 

    <div class="color-swatch" contenteditable="false"> 
    <div class="pane"> 
     <div style="background: #000000;"></div> 
    </div> 
    <div class="pane" "=""> 
     <div style="background: #990000;"></div> 
    </div> 
    </div> 
</div> 

我有以下的jQuery的,只有需要执行任务时,用户单击DIV CONTENTEDITABLE,而不是它的孩子(例如。颜色选取器/。颜色,色板)。

$('div.test').mouseup(function(e) { 
    if(e.target.contenteditable=='true') { 
    alert('yes'); 
    } else { 
    alert('no'); 
    } 
    // do action only if triggered by contenteditable div 
}); 

我的猜测是检查e contenteditable div是否触发了事件。

但我似乎无法得到它的工作。

如果我点击contenteditable div我得到一个警告'不',这应该是。

如果我点击.color-picker || .color-switch我也得到警觉'不'这是很好的。

在此先感谢您的帮助。

回答

3

的JavaScript属性是驼峰,它应该是contentEditable这样的:

$('div.test').mouseup(function(e) { 
    if(e.target.contentEditable == 'true') { 
    alert('yes'); 
    } else { 
    alert('no'); 
    } 
}); 

You can test it out here

+0

并不完美,但足够好;)我必须设置颜色选择器的div也CONTENTEDITABLE =“假”,否则我得到了一个警告是就可以了。你是最大的TNX:D – PeeHaa 2010-12-09 00:22:08

-1

您可以使用属性选择:

$("div[contenteditable='true']").mouseup 
+0

不是真的,如果点击其中的某个元素,它也会触发。 – PeeHaa 2010-12-09 00:22:57