我有一个获取内容所选文本的函数,但我想要做的是获取所选文本,并为其html标记添加唯一ID。
function getSelectedText() {
if (window.getSelection) {
return window.getSelection();
} else if (document.selection) {
return document.selection.createRange().text;
}
return '';
}
$('#outline').on('click',function(){
var text = getSelectedText();
//here want to add the unique id to this paragraph that contains this text
});
我陷入困境,无法在其他地方找到类似的东西。
答案 0 :(得分:0)
以下是您要做的事情的一个例子。
演示:https://jsfiddle.net/xo01kxLa/1/
function getSelectedText() {
if (window.getSelection) {
return window.getSelection();
} else if (document.selection) {
return document.selection.createRange().text;
}
return '';
}
function getSelectionParentElement() {
var parentEl = null, sel;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
parentEl = sel.getRangeAt(0).commonAncestorContainer;
if (parentEl.nodeType != 1) {
parentEl = parentEl.parentNode;
}
}
} else if ( (sel = document.selection) && sel.type != "Control") {
parentEl = sel.createRange().parentElement();
}
return parentEl;
}
$('#outline').on('click', function () {
var text = getSelectedText();
var parent = getSelectionParentElement();
$(parent).attr('id', 'id' + Math.floor((Math.random() * 1000) + 1));
});
如果您只想设置一次唯一ID,请填写:
$('#outline').on('click', function () {
var text = getSelectedText();
var parent = getSelectionParentElement();
if($(parent).attd('id') != '') {
$(parent).attr('id', 'id' + Math.floor((Math.random() * 1000) + 1));
}
});