私はいくつかのことを除いて、レペの答えが好きでした:
- ブラウザのスニッフィング、jQueryまたはnoは最適ではありません
 
- ドライ
 
- objの親がcreateTextRangeをサポートしていない場合、IE8では機能しません
 
- setBaseAndExtentを使用するChromeの機能を活用する必要があります(IMO)
 
- 複数のDOM要素(「選択された」要素内の要素)にまたがるテキストは選択しません。つまり、複数のスパン要素を含むdivでselTextても、それらの各要素のテキストは選択されません。それは私にとって、YMMVにとっての決断でした。
 
これが私が思いついたもので、インスピレーションを得るためにlepeの答えにうなずきます。これはおそらく少し強引なため、私はあざけられるだろうと確信しています(実際にはもっと難しいかもしれませんが、私は脱線します)。しかし、それは機能し、ブラウザのスニッフィングを回避し、それがポイントです。
selectText:function(){
    var range,
        selection,
        obj = this[0],
        type = {
            func:'function',
            obj:'object'
        },
        // Convenience
        is = function(type, o){
            return typeof o === type;
        };
    if(is(type.obj, obj.ownerDocument)
        && is(type.obj, obj.ownerDocument.defaultView)
        && is(type.func, obj.ownerDocument.defaultView.getSelection)){
        selection = obj.ownerDocument.defaultView.getSelection();
        if(is(type.func, selection.setBaseAndExtent)){
            // Chrome, Safari - nice and easy
            selection.setBaseAndExtent(obj, 0, obj, $(obj).contents().size());
        }
        else if(is(type.func, obj.ownerDocument.createRange)){
            range = obj.ownerDocument.createRange();
            if(is(type.func, range.selectNodeContents)
                && is(type.func, selection.removeAllRanges)
                && is(type.func, selection.addRange)){
                // Mozilla
                range.selectNodeContents(obj);
                selection.removeAllRanges();
                selection.addRange(range);
            }
        }
    }
    else if(is(type.obj, document.body) && is(type.obj, document.body.createTextRange)) {
        range = document.body.createTextRange();
        if(is(type.obj, range.moveToElementText) && is(type.obj, range.select)){
            // IE most likely
            range.moveToElementText(obj);
            range.select();
        }
    }
    // Chainable
    return this;
}
それでおしまい。あなたが見るもののいくつかは読みやすさおよび/または利便性のためです。Opera、Safari、Chrome、Firefox、IEの最新バージョンのMacでテスト済み。IE8でもテスト済み。また、私は通常、コードブロック内で必要な場合にのみ変数を宣言しますが、jslintはすべてを上で宣言することを提案しました。OK jslint。
編集する
これをopのコードに結び付ける方法を含めるのを忘れていた:
function SelectText(element) {
    $("#" + element).selectText();
}
乾杯