Use jQuery select() to select contents of a div

前端 未结 4 1529
耶瑟儿~
耶瑟儿~ 2020-12-10 07:48

Is it possible to use or adapt jQuery\'s .select() to set a selection range on the entire contents of a div?

I have a div which has a series of labels, inputs, selec

4条回答
  •  -上瘾入骨i
    2020-12-10 08:21

    Check this fiddle: http://jsfiddle.net/JAq2e/

    Basically the trick is to introduce a hidden text node whose content will be included in the selection when copied.

    jQuery.fn.selectText = function(){
        this.find('input').each(function() {
            if($(this).prev().length == 0 || !$(this).prev().hasClass('p_copy')) { 
                $('

    ').insertBefore($(this)); } $(this).prev().html($(this).val()); }); var doc = document; var element = this[0]; console.log(this, element); if (doc.body.createTextRange) { var range = document.body.createTextRange(); range.moveToElementText(element); range.select(); } else if (window.getSelection) { var selection = window.getSelection(); var range = document.createRange(); range.selectNodeContents(element); selection.removeAllRanges(); selection.addRange(range); } };

    And use it like:

    $('#selectme').selectText();
    

    You can couple the above plugin with an event handler if you want to create selection links :

    Code :

    $('.select-text').on('click', function(e) {
        var selector = $(this).data('selector');
        $(selector).selectText();
        e.preventDefault();
    });
    

    Usage :

    Select all
    
    some text

    Demo : see js fiddle

提交回复
热议问题