Javascript 选择span标记中的文本

Javascript 选择span标记中的文本,javascript,jquery,Javascript,Jquery,在考虑浏览器兼容性时,在span标记中选择文本的方法是什么?例如,我有: jQuery().html('<p>Hello world <span>lorem ipsum</span> my good friend!'); HTML代码 <input type="text" name="firstName" value="Enter your name..." /> //SELECT TEXT RANGE $.fn.selectRange = f

在考虑浏览器兼容性时,在span标记中选择文本的方法是什么?例如,我有:

jQuery().html('<p>Hello world <span>lorem ipsum</span> my good friend!');

HTML代码

<input type="text" name="firstName" value="Enter your name..." />
//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);

//选择文本范围
$.fn.selectRange=函数(开始、结束){
返回此值。每个(函数(){
如果(此.setSelectionRange){
这是focus();
此.setSelectionRange(开始、结束);
}else if(this.createTextRange){
var range=this.createTextRange();
范围。塌陷(真);
range.moveEnd('character',end);
range.moveStart('character',start);
range.select();
}
});
};
$('input[name=firstName]').focus().selectRange(5,10)

你是说像这样

var i=0;
函数SelectText(元素){
var doc=文档
,text=doc.querySelectorAll(元素)
,范围,选择
;
if(doc.body.createTextRange){
range=document.body.createTextRange();
range.moveToElementText(文本[i]);
range.select();
}else if(window.getSelection){
selection=window.getSelection();
range=document.createRange();
范围。选择节点内容(文本[i]);
selection.removeAllRanges();
选择。添加范围(范围);
}
i++;
如果(i==text.length)i=0;
}
document.onclick=函数(e){
如果(e.target.className=='单击'){
选择文本('span');
}
};
你好,我的好朋友!
你好,我的好朋友!

单击我

问得好。我希望看到一种也适用于移动浏览器的方法。可能重复css中的
cursor:pointer
?不。只希望选择lorem ipsum,就像用户用光标手动选择一样。@Henrikpeterson等等,那么您想用特定的背景色突出显示文本吗?就像在计算机上复制文本一样?@Henrik Petterson这可以帮助您选择光标,因为光标选择仅在
元素中有效,而OP指的是
。这正是我的意思,但是,我想使用.html()输出文本,并在pageload上选择文本包装,不用点击。感谢您的更新,尽管.html()是通过ajax添加的(在pageload之后)。对不起,我没有正确地澄清这一点。能否通过ajax将代码调整为output.html(),并选择span标记中的文本?当我有资格努力时,我将以50分奖励这个。谢谢这一整天都让人头疼。关键是在添加内容后立即调用函数,如果有问题,请打开一个新问题…lorem ipsum我的老朋友。我又来和你说话了。因为在我睡觉的时候,一个幻影悄悄地爬进了你好的世界。。。
//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);