我可以像使用Rangy一样选择下一个单词:
$(function () {
$("#select-next-one-word").click(function () {
var selection = rangy.getSelection();
selection.expand("word", {
wordOptions: {
includeTrailingSpace: true
}
});
selection.collapseToEnd();
selection.expand("word");
});
});
但是如何将选择范围扩展到下一个N个字?
答案 0 :(得分:2)
这会让你朝着正确的方向前进。我修改了你的“select-next-two-words”功能,如下所示:
$(function () {
$("#select-next-two-words").click(function () {
var selection = rangy.getSelection();
selection.expand("word", {
wordOptions: {
includeTrailingSpace: true
}
});
selection.collapseToEnd();
var range = selection.getRangeAt(0);
range.moveEnd("word", 2);
selection.setSingleRange(range);
});
});
我在范围上使用moveEnd
来向前移动两个单词的结尾。但是,这不会修改屏幕上的选择。您必须使用setSingleRange
设置选择,以便屏幕上的内容反映更改。
对于任意数量的单词,您只需将range.moveEnd("word", 2)
更改为您想要的任何数字。
答案 1 :(得分:2)
我建议从选择中获取范围,将其扩展到包含整个单词,将其折叠到最后,再将两个单词向前移动整个范围,然后使用{{1}将范围的开头移回两个单词}}。根据我的理解,它有点复杂,但达到了预期的效果。
演示:http://jsfiddle.net/u4337/81/
代码:
moveStart()