2010-12-09 59 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