I took Nico Burns's answer and made it using jQuery:
div contentEditable="true"
You'll need jQuery 1.6 or higher:
savedRanges = new Object();
$('div[contenteditable="true"]').focus(function(){
var s = window.getSelection();
var t = $('div[contenteditable="true"]').index(this);
if (typeof(savedRanges[t]) === "undefined"){
savedRanges[t]= new Range();
} else if(s.rangeCount > 0) {
s.removeAllRanges();
s.addRange(savedRanges[t]);
}
}).bind("mouseup keyup",function(){
var t = $('div[contenteditable="true"]').index(this);
savedRanges[t] = window.getSelection().getRangeAt(0);
}).on("mousedown click",function(e){
if(!$(this).is(":focus")){
e.stopPropagation();
e.preventDefault();
$(this).focus();
}
});
savedRanges = new Object();_x000D_
$('div[contenteditable="true"]').focus(function(){_x000D_
var s = window.getSelection();_x000D_
var t = $('div[contenteditable="true"]').index(this);_x000D_
if (typeof(savedRanges[t]) === "undefined"){_x000D_
savedRanges[t]= new Range();_x000D_
} else if(s.rangeCount > 0) {_x000D_
s.removeAllRanges();_x000D_
s.addRange(savedRanges[t]);_x000D_
}_x000D_
}).bind("mouseup keyup",function(){_x000D_
var t = $('div[contenteditable="true"]').index(this);_x000D_
savedRanges[t] = window.getSelection().getRangeAt(0);_x000D_
}).on("mousedown click",function(e){_x000D_
if(!$(this).is(":focus")){_x000D_
e.stopPropagation();_x000D_
e.preventDefault();_x000D_
$(this).focus();_x000D_
}_x000D_
});
_x000D_
div[contenteditable] {_x000D_
padding: 1em;_x000D_
font-family: Arial;_x000D_
outline: 1px solid rgba(0,0,0,0.5);_x000D_
}
_x000D_
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>_x000D_
<div contentEditable="true"></div>_x000D_
<div contentEditable="true"></div>_x000D_
<div contentEditable="true"></div>
_x000D_