2
A
回答
1
我不知道有什麼可實現的方法,但我得到了一個可行的解決方案,雖然它很醜。
您可以將div
文字的每個字母包裝在可以說的span
元素中,併爲每個字母添加唯一的標識符。然後,你會爲這些span
元素掛上事件處理程序,而不是整個div,並根據跨度id分辨出哪個字符是那個。
這整個事情可以在JS中完成,但正如我所說,這不是理想的解決方案。
下面是示例(我已經爲div添加了一個test
id,所以我可以更容易地找到它)。
var letters = $('#test').text();
var spans = '';
for (var i = 0; i < letters.length; i++) {
spans += '<span id="id' + i + '">' + letters[i] + '<span>';
}
$('#test').html(spans);
$('span[id^=id]').click(function() {
alert('Clicked char: ' + (Number($(this).attr('id').substring(2)) + 1));
return false;
});
您也可以試試我的demo。
1
不是這樣;我猜你必須將每個字符分成<span>
元素,無論是在服務器端還是使用JQuery。
0
這是一種可能可以發揮作用的方式:它包括暫時使文檔可編輯並檢查選擇。它應該在Firefox 3 +,IE 6+,最近的Safari和Chrome中運行。
目前的情況是,有一些問題,我可以看到:
- 在IE的結果是其他瀏覽器不同:IE計數在整個含元素直到而其他瀏覽器插入符的所有字符在包含文本節點的範圍內給出偏移量,但是您可以繞過此操作;
- 將出現邊框圓在某些瀏覽器
- 當前元素在Opera或Firefox 2不工作,和葉記錄其他UI毛刺的編輯
- 可能性:它是一個討厭的黑客行爲。
代碼:
window.onload = function() {
var mouseDownEl;
document.onmousedown = function(evt) {
evt = evt || window.event;
var el = evt.target || evt.srcElement;
if (evt.srcElement || !("contentEditable" in el)) {
document.designMode = "on";
} else {
el.contentEditable = "true";
}
mouseDownEl = el;
};
document.onclick = function(evt) {
evt = evt || window.event;
var el = evt.target || evt.srcElement;
if (el == mouseDownEl) {
window.setTimeout(function() {
var caretPos, range;
if (typeof window.getSelection != "undefined") {
caretPos = window.getSelection().focusOffset;
} else if (document.selection && document.selection.createRange) {
range = document.body.createTextRange();
range.moveToElementText(el);
range.collapse();
range.setEndPoint("EndToEnd", document.selection.createRange());
caretPos = range.text.length;
}
if (el.contentEditable == "true") {
el.contentEditable = "false";
} else {
document.designMode = "off";
}
alert(caretPos);
}, 1);
} else {
if (mouseDownEl.contentEditable == "true") {
mouseDownEl.contentEditable = "false";
} else {
document.designMode = "off";
}
}
mouseDownEl = null;
};
};
相關問題
- 1. Symfony3獲取事件偵聽器中非映射字段的值
- 2. 內存映射文件的位置
- 3. 事件映射字符串
- 4. 映射非存在的文件
- 5. 文本文件映射
- 6. Elasticsearch映射配置文件增強字段
- 7. VSTS字段映射
- 8. Salesforce:映射字段
- 9. VB腳本映射網絡位置
- 10. IP本地化:映射IP->位置固定一段時間?
- 11. Doctrine2映射:2個字段映射到一個字段(ManyToOne)
- 12. Hibernate映射位置指定?
- 13. 位置按鈕映射
- 14. 寫入內存映射文件比非內存映射文件慢
- 15. Hibernate教程 - 放置映射文件的位置?
- 16. 如何在NHibernate中選擇非映射字段?
- 17. BizTalk 2013文件在非事件接收位置觸發
- 18. 鍵入文本字段 - 猜測位置
- 19. AutoMapper映射字段到
- 20. Active Directory字段映射
- 21. 對象映射字段
- 22. CSV字段映射GUI
- 23. 映射ElasticSearch的GeoPoint字段
- 24. 多字段映射elasticsearch
- 25. 休眠是映射字段
- 26. 當所有其他字段映射到實體時,驗證Symfony2表單類中的非映射字段
- 27. C#內存映射文件 - 位圖
- 28. 在MySQL中的映射位置
- 29. sys.stdout.write()在MRJOB映射器中的位置?
- 30. 映射按鍵事件qt
我想補充的是,分裂成跨度應該由jQuery和不能做實際的HTML – Andrey 2010-05-24 17:01:16
這就是我寫在我的答案。 – RaYell 2010-05-24 17:06:50