jQuery是否可以使用分部元素(也称为范围)?可能不会,但有人知道任何插件吗?-或者有人愿意和我合作制作这样一个插件吗?
本质上,这就是我想要的功能:
var $el = $('<div>a b c d</div>');
$el.range(2,3).wrap('<strong>');
console.log($el.html()); // a <strong>b</strong> c d
$el.range(4,5).addClass('super');
$el.range(4,5).addClass('awesome');
console.log($el.html()); // a <strong>b</strong> <span class="super awesome">c</span> d
$el.range(2,5).addClass('shweet');
console.log($el.html()); // a <span class="shweet"><strong>b</strong> <span class="super awesome">c</span></span> d
$el.range(2,5).start; // 2
$el.range(2,5).finish; // 5
$el.range(); // returns $el
$el.selection(); // returns the partial element (aka range) for the current selection
$el.selection(2,5); // would select 'b c', and return their partial element (aka range)
$el.currentLine(); // returns the partial element (aka range) for the current line
在文本区域上也应该完全相同。
答案可以是coffeescript或javascript。
变更日志:
- 添加
$el.selection()
- 添加
$el.currentLine()
这里有一个插件的尝试。唯一的问题是,在第一次调用.range
之后,添加了一些HTML,因此对于下一次调用,从4到5的字符将不相同。仍在寻找解决这一问题的方法。
更新
我已经更改了很多插件。现在它不是很漂亮,但它很管用。看着它在这里工作。
所有.spanAddedRange都是必需的,因为它们必须与原始html一起添加,而此时您无法知道将用于调用.range
方法的值。
更新
现在HTML5编辑项目中的Slices功能成功了