У меня есть некоторый контент, сгенерированный моделью ML в сотнях абзацев, у каждого параграфа есть некоторый выделенный контент.
Иногда выделенные данные неверны, мы хотим, чтобы пользователь выделил текст и снова выделил его, чтобы исправить его.
<p> Contrary to popular belief, <span class='highlighted'>Lorem</span>Ipsum is not simply random text. It has roots in a piece of popular classical Latin literature from 45 <span class='highlighted'>BC</span>, making it over 2000 years old.</p>
В этом примерепользователь может выбрать:
- Lorem Ipsum
- Латиница
- 45 до н.э.
- 2000 лет
Нижекод работает для # 2 и # 4, но я не могу сделать это для # 1 и # 3, поскольку он уже выделен.
Я использую эту функцию getSelectionText () для выборатекст.
$('div.content>p').on('mouseup', function(e){
var toselected = getSelectionText();
var para = $(this).html();
var start = para.indexOf(toselected);
var end = start + toselected.length;
var html = para.replace(toselected, '<span class="highlighted">' toselected + '</span>');
var obj = {"content": $(this).text(), "indices_range":[[start, end]]}
$.post('/update/<content_id>', data:tojson(obj), function(){ $(e.target).html(html);})
});
Также интересно, как я могу получить начальный, конечный индексы, если один и тот же текст встречается дважды или несколько раз, например.popular
.