2

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

在 textareas 上也应该完全相同。

答案可以是coffeescript 或javascript。

变更日志:

  • 添加$el.selection()
  • 添加$el.currentLine()
4

1 回答 1

3

这里有一个做插件的尝试。唯一的问题是,在.range添加了对某些 HTML 的第一次调用之后,因此对于下一次调用,从 4 到 5 的字符将不一样。仍在寻找解决该问题的方法。

更新

我已经更改了很多插件。现在它不是很漂亮,但它可以工作。看它在这里工作。

所有 .spanAddedRange 确实是必需的,因为它们必须与原始 html 一起添加,并且在那一刻您无法知道将用于调用.range方法的值。

更新

现在由HTML5 Edit项目中的Slices功能取得成功

于 2011-06-07T12:27:55.100 回答