选择范围标记中的文本
Select text within span tag
在考虑浏览器兼容性时,在 span 标签中选择文本的方法是什么?例如,我有:
jQuery().html('<p>Hello world <span>lorem ipsum</span> my good friend!');
我希望lorem ipsum
部分被光标选中。
我有以下代码可以选择文本:
function SelectText(element) {
var doc = document
, text = doc.getElementById(element)
, range, selection
;
if (doc.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(text);
range.select();
} else if (window.getSelection) {
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(text);
selection.removeAllRanges();
selection.addRange(range);
}
}
你的意思是这样的?
var i = 0;
function SelectText(element) {
var doc = document
, text = doc.querySelectorAll(element)
, range, selection
;
if (doc.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(text[i]);
range.select();
} else if (window.getSelection) {
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(text[i]);
selection.removeAllRanges();
selection.addRange(range);
}
i++;
if ( i === text.length ) i = 0;
}
document.onclick = function(e) {
if (e.target.className === 'click') {
SelectText('span');
}
};
<div>Hello world <span>lorem ipsum</span> my good friend!</div>
<div>Hello world <span>lorem ipsum</span> my good friend!</div>
<p class="click">Click me!</p>
如果你只需要选择一个标签元素,你可以使用querySelector而不是querySelectorAll
下面是一个使用 .html() 的示例
$(function() {
$('body').html('<p>Hello world <span>lorem ipsum</span> my good friend!');
})
function SelectText(element) {
var doc = document
, text = doc.querySelector(element)
, range, selection
;
if (doc.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(text);
range.select();
} else if (window.getSelection) {
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(text);
selection.removeAllRanges();
selection.addRange(range);
}
}
window.onload = function() {
SelectText('span');
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
HTML 代码
<input type="text" name="firstName" value="Enter your name..." />
JS代码
//SELECT TEXT RANGE
$.fn.selectRange = function(start, end) {
return this.each(function() {
if (this.setSelectionRange) {
this.focus();
this.setSelectionRange(start, end);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
});
};
$('input[name=firstName]').focus().selectRange(5,10);
点击这里获取永久链接到jsfiddle
//SELECT TEXT RANGE
$.fn.selectRange = function(start, end) {
return this.each(function() {
if (this.setSelectionRange) {
this.focus();
this.setSelectionRange(start, end);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
});
};
$('input[name=firstName]').focus().selectRange(5,10);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="firstName" value="Enter your name..." />
相关文章:
- Angular JS-文本框未在独立范围内更新
- 如何在JavaScript中获取文本区域的选定文本范围
- 对象内部函数内的对象文本的范围
- 如何按从当前单词到段落中该句子(.)结尾的范围选择文本
- 如何在 Chrome 的文本区域中“替换”选定的文本范围
- 根据输入范围更新显示的文本量
- 返回Javascript中给定正则表达式的文本范围数组
- 根据输入范围更新显示的文本量
- 如何使用javascript将文本框中的值限制为1-999之间的值范围
- 使用jQuery获取h4 class=“”的文本内容;ng结合”;超出Angular范围
- 如何允许用户在文本框中插入角度范围变量
- WKHTMLTOPDF - 添加一个侧边栏,该侧边栏跟随不同的文本范围
- 目标C - UIWebview - 将javascript文本范围转换为目标c对象,反之亦然
- 如何删除所选文本范围中的类属性
- Javascript:如何获取所选文本范围之外的文本
- 具有重叠文本范围的解决方案
- 文本范围选择空设计不能在ie7,8中工作
- 在Javascript中,我需要一个RegEx来删除具有多个外观的两个文本(范围)之间的字符串中的文本
- OfficeJs/WordJs通过索引和绑定单击事件选择文本范围
- 未在 Web 浏览器控件中选择/突出显示文本范围