0

我有一個div(.top)是在另一個div(.text)之上。如果.top被點擊,它應該隱藏並且.text應該可以編輯。我也直接把重點放在文字上。通過點擊事件與偏移量contentEditable

不幸的是,遊標始終處於開頭。如果它被直接點擊,那麼光標會是用戶點擊的。

這是demo

是否有一種方法可以將.top文件中的click事件傳遞給帶有正確偏移量的.text(因爲這似乎是設置正確的光標位置所必需的)?

+0

我錯過了頂部div的觀點。如果你告訴我們爲什麼,我們可能會爲你提供一個更好的選擇。 – 2011-04-08 21:31:43

+0

我必須在可編輯元素的頂部顯示圖像。另一件事是鏈接不應該像鏈接一樣(例如,當鼠標移過它們時光標不應該改變)。 – Zardoz 2011-04-08 21:51:54

回答

0

我對此有兩個想法。首先通過切換類來改變可編輯版本的風格,而不是使用兩個div,其中一個禁用它,以避免這個問題。

另一個想法是在'捕捉階段'中附加一個點擊處理程序,而不是傳統的氣泡階段,以便事件繼續傳播並且編輯框獲得點擊。我不確定現在如何在jQuery中做到這一點。

+0

好主意。不幸的是它不起作用。聚焦.text元素時光標不顯示。我使用事件冒泡,請參閱http://jsfiddle.net/qUE8T/ – Zardoz 2011-04-08 21:46:46

0

點擊事件正在被DIV觸發。它不知道點擊發生在哪裏。要做到這一點,你必須跟蹤鼠標事件。這本身並不困難。

從鼠標x,y您可以計算DIV x,y並轉換座標。這也不難。

問題出現在DIV中的字符和點擊之間沒有直接的關聯。要做到這一點,你基本上需要插入一個元素到DIV中,並在文本中迭代它的位置,直到匹配大致的鼠標點擊位置。它可能不會完全匹配,因爲您沒有完全點擊字符的開頭或結尾。

然後,你必須弄清楚這是哪裏,並在代碼中移動光標。

相關問題