我正在尋找允許我在選定文本之前或之後構建某些元素的函數。類似這樣的一個javascript replace selection all browsers,但用於在選擇之前或之後添加一些內容而不是替換它,如after()
和before()
jQuery方法。我應該使用一些DOM選擇方法,如果是的話,哪一個?或者確實存在更容易實現的東西?在文本選擇之前/之後添加元素
6
A
回答
10
這裏有一對功能來做到這一點。
活生生的例子:http://jsfiddle.net/hjfVw/
代碼:
var insertHtmlBeforeSelection, insertHtmlAfterSelection;
(function() {
function createInserter(isBefore) {
return function(html) {
var sel, range, node;
if (window.getSelection) {
// IE9 and non-IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = window.getSelection().getRangeAt(0);
range.collapse(isBefore);
// Range.createContextualFragment() would be useful here but is
// non-standard and not supported in all browsers (IE9, for one)
var el = document.createElement("div");
el.innerHTML = html;
var frag = document.createDocumentFragment(), node, lastNode;
while ((node = el.firstChild)) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
}
} else if (document.selection && document.selection.createRange) {
// IE < 9
range = document.selection.createRange();
range.collapse(isBefore);
range.pasteHTML(html);
}
}
}
insertHtmlBeforeSelection = createInserter(true);
insertHtmlAfterSelection = createInserter(false);
})();
2
在MSIE: collapse給定範圍和使用pasteHTML插入元件
其他: 另外collapse給定範圍內,並且經由insertNode
兩個插入元件摺疊方法接受一個可選的參數,它定義了你想要摺疊到的位置。 如果你想把元素放在最後,摺疊到最後,否則到開始。
相關問題
- 1. 在添加子元素之前或之後創建文檔樹
- 2. 之前添加元素之前調用
- 3. jQuery的選擇元素之前和元素中刪除後/添加
- 4. 在jQuery中選擇當前匹配元素之後的元素?
- 5. 選擇XSLT 1.0中元素之前/之後的字符
- 6. 在img之後添加「</a>」jQuery將它添加到元素之前
- 7. xsltproc在多個文件之前和之後添加文本
- 8. 在包含字符串的元素之後添加文本
- 9. 在TextView之前或之後添加靜態文本
- 10. 如何在jQuery.load(html)之後選擇jQuery.Treeview中的當前元素?
- 11. jQuery:在指定元素之前選擇最後一個匹配
- 12. 在文本文件的最後一行之前添加文本
- 13. ::添加內容之前,而不是之前的元素
- 14. NSMutablearray在其他元素之前或之後插入新元素
- 15. 之前/之後的僞元素
- 16. Aligning ::之前和::之後僞元素
- 17. 在元素之後選擇DOM中的所有div元素?
- 18. 如何在第一個元素之前添加元素?
- 19. NHibernate - 刷新之前/之後選擇?
- 20. jquery點擊後選擇之前的元素
- 21. simplexml_load_file在'.get_query()'之前添加文本。'
- 22. 在div中添加文本之前jquery
- 23. Powershell:在特定的當前兄弟元素之後添加新的XML元素
- 24. jQuery:在已添加選項之後更新選擇內的選項文本?
- 25. 如何在另一個元素之後添加元素?
- 26. 在另一個元素之後添加元素?
- 27. 如何選擇:之前和之後:元素(而不是其內容)?
- 28. ::選擇僞選擇器忽略::僞元素之前
- 29. Windows上的Safari支持:之前和之後:僞元素之後?
- 30. Eclipse - 自定義快速修復 - 在選擇之前和之後添加一些文本
沒有一個答案,但我敢打賭,你可以做到這一點很容易地使用添唐氏[瘦長](http://code.google.com/p/rangy /)庫。 –