在考虑浏览器兼容性时,在span标记中选择文本的方法是什么?例如,我有:
jQuery().html('<p>Hello world <span>lorem ipsum</span> my good friend!');
我希望lorem ipsum
部分选择 cursor 。
我有code选择文字:
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);
}
}
答案 0 :(得分:2)
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>
答案 1 :(得分:0)
HTML CODE
<input type="text" name="firstName" value="Enter your name..." />
JS CODE
//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);
Click Here For Permanent link to 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);
&#13;
<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..." />
&#13;