2012-01-03 47 views
3

如何通過jQuery選擇部分文本和過程?例如,我有作爲如何使用jQuery選擇文本

<div id="test">This is an example text here</div> 

我選擇用鼠標幾句話(不是整個DIV)一文,並希望在

<div id="target"></div> 

回答

2

以下是操作方法。以下作品適用於所有主流瀏覽器,包括IE 6.

function getSelectedText() { 
    var selectedText = "", sel; 
    if (window.getSelection) { 
     selectedText = "" + window.getSelection(); 
    } else if ((sel = document.selection) && sel.type == "Text") { 
     selectedText = sel.createRange().text; 
    } 
    return selectedText; 
} 

$('#target').text(getSelectedText()); 
2

你可以用它來顯示這些話(的#test部分)在text method像這樣:

(function(namespace) { 
    namespace.getSelected = function() { 
    var t = ''; 
    if (window.getSelection) { 
     t = window.getSelection(); 
    } else if (document.getSelection) { 
     t = document.getSelection(); 
    } else if (document.selection) { 
     t = document.selection.createRange().text; 
    } 
    return t; 
    }; 
}(Namespace || {})) 

$(function() { 
    $('#test').on("mouseup", function() { 
    var selectedText = Namespace.getSelected(); 
    if (selectedText) { 
     $('#target').text(selectedText); 
    } 
    }); 
}); 
+0

用戶選擇的文本在哪裏考慮? – 2012-01-03 12:33:54

+0

如何獲取當前選定的文本? – aProgrammer 2012-01-03 12:34:01

+1

@nikc我誤解了這個問題,現在回答了更新。 – 2012-01-03 12:44:08

4

如果您是指通過選擇文本,然後將其顯示爲一個元素。

var selectedText; 

if(window.getSelection) 
{ 
    selectedText = window.getSelection(); 
} 
else if(document.getSelection) 
{ 
    selectedText = document.getSelection(); 
} 
else if(document.selection) 
{ 
    selectedText = document.selection.createRange(); 
} 

$('#target').text(selectedText.toString()); 

或者通過典型的顯示元素的文本到另一個元素,那麼你使用:

$('#target').text($('#test').text()); 
+0

這在IE <9中不起作用。請參閱我的答案。 – 2012-01-03 14:28:43

1
$.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(); 
     } 
    }); 
}; 

參考:http://programanddesign.com/js/jquery-select-text-range/

+0

這隻適用於文本輸入和textareas。問題是關於常規HTML內容中的選擇。另外,我認爲OP希望得到選定的文本而不是設置它。 – 2012-01-03 15:13:36

1

你將不得不使用http://www.examplet.buss.hk/jquery/caret.php插件,你可以很容易得到選定的文本

//獲取開始pos在int把盒子使用id = 「BOX1」 $( 「#盒1」)。插入符號()。開始

//獲取結束POS $( 「#盒1」)。插入符號()。結束

//獲取所選文本 $(「#box1」)。caret()。text

+0

這僅適用於文本輸入和textareas。問題是關於常規HTML內容中的選擇。 – 2012-01-03 15:15:33

相關問題