我有以下代码演示contenteditable属性和一个按钮,将带有contenteditable区域的段落插入到粗体文本。我的问题是如何将焦点返回到我点击粗体后停止的位置,如果突出显示某些文本,然后单击粗体,则会将这些文本加粗,但焦点将不再存在。如果您不选择任何内容并单击粗体,同样的事情会发生,重点将消失,如果您再次点击从哪里离开,则可以键入粗体文本。在execCommand后返回焦点到contenteditable?
非常感谢您的帮助!
<head>
<style type="text/css">
#container{
width:500;
}
.handle{
float:left;
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script type="text/javascript">
$(function(){
$('#bold').click(function(){
document.execCommand('bold', false, true);
});
});
</script>
</head>
<button id="bold">Bold</button>
<div id="container">
<div class="c"><p contenteditable>Some text here asdf asdf asdf asdf asdf asd fasd fsa dfsa df asdf sadf sa dfa sdf sadf asd fsa df sadf asdf asdf asd fas df asdf as </p></div>
<div class="c"><p contenteditable>Some text here asdf asdf asdf asdf asdf asd fasd fsa dfsa df asdf sadf sa dfa sdf sadf asd fsa df sadf asdf asdf asd fas df asdf as </p></div>
</div>
这会在每次单击段落时将操作绑定到'#bold'的单击事件,从而导致多次绑定处理程序。你不想那样。 – Jake 2010-06-30 04:11:42
增加了'.editable'类,所以它只绑定到标记中指定的那个类。 – ALFABreezE 2011-09-06 14:50:23
每次你点击一个pedable时,一个处理器将被绑定#bold。当你点击#bold时,所有这些将被触发,导致execCommand被多次运行,并且聚焦跳过所有已被点击的pedables。 devongovett给出的答案不会遇到这个问题,因为#bold处理程序只绑定一次。 – Jake 2011-09-11 21:57:50