我偏离了您的文本选择想法,并做了一个基于鼠标悬停和突出显示的解决方案。不是您的确切要求,但它实现了您的基本目标。有很大的改进空间。
示例:jsFiddle
JS
var $txtArea = $('textarea');
function Rebind(){
$('#editable *').off('mouseover.editor').on('mouseover.editor',function() {
$(this).addClass('highlight');
return false;
}).off('mouseout.editor').on('mouseout.editor',function() {
$(this).removeClass('highlight');
return false;
}).off('click.editor').on('click.editor',function() {
var $sel = $('.highlight');
$txtArea.val($sel.html()).data('selected', $sel);
});
}
Rebind();
$('input').click(function(){
$txtArea.data('selected').html($txtArea.val());
Rebind();
});
注意:无论出于何种原因, jQueryon
没有选择新元素,所以我需要在编辑后重新绑定它们。
HTML
<div id='editable'>
<div>
This is <br /> some <b>content</b>
<div>testing</div>
<div>
some <i>more content</i>
<div>eidt me</div>
</div>
</div>
</div>
<textarea ></textarea>
<input type="button" value="save" />
CSS
textarea{
height:150px;
width:100%;
}
.highlight
{
border:1px solid blue !important;
}