В моем проекте я использую отличный и полезный плагин jQuery TextRange. У меня есть выделение div в верхней части текстового поля, и я должен знать, какой фактический элемент пользователь редактировал. Чтобы лучше понять, я буду использовать множество примеров ниже.
В моем проекте, если у меня есть этот текст на textarea:
Text that doesn't matter #this_matter and #this_too
У меня есть что-то вроде этого в моем ярлыке div:
"Text that doesn't matter <b>#this_matter</b> and #this_too</b>"
Мне нужно знать, что "хэштаг" я редактирую. Поэтому я думаю, что исправить это с помощью позиций, но, как вы увидите, у меня есть некоторые вопросы. В моем текстовом поле я получаю позицию курсора, используя:
input = $('#post-input')
var cursorPosition = input.textrange('get','position')
С этой информацией мне нужно знать, что хэштаг я редактирую. Предположим, что |
является символом того, где курсор находится в текстовом поле, поэтому:
"Text that doesn't matter #this_matter and #this|_too"
Должен возвращать элемент <b>#this_too</b>
, потому что это фактический хэштег. Другой пример:
"Text that doesn't matter #|this_matter and #this_too"
Необходимо вернуть <b>#this_matter</b>
.
После этого все, как я могу вернуть правый элемент с информацией о позиции курсора?
Вы можете использовать document.elementFromPoint:
document.elementFromPoint(event.clientX, event.clientY);