Не уверен, правильно ли выбрано название ...
Я пытаюсь имитировать выделение текста в HTML / JS / CSS, чтобы избавиться от пузыря действий на мобильном устройстве при правильном выборе текста.
Чтобы быть более конкретным, я пытаюсь этого избежать:
Визуальный:
Способ, которым я его построил, и он может измениться, потому что это не имеет значения, заключается в том, что выбранный текст заключен внутри span.selection
, а внутри этого тега также есть две вставки, используемые в качестве обработчиков:
Lorem ipsum dolor <!-- Unselected Text -->
<span class="selection"> <!-- Start selection wrapper -->
<span rel="previous" class="caret"></span> <!-- The left-side caret -->
sit amet, consectetur <!-- The selected texts -->
<span rel="next" class="caret"></span> <!-- The right-side caret -->
</span> <!-- End selection wrapper -->
adipiscing elit. <!-- Unselected Text -->
В идеале было бы интересно использовать перетаскивание для выбора большего или меньшего количества текстов, но я считаю, что это было бы чертовски сложно сделать, и в этом случае, возможно, используя щелчок по каретке, чтобы выбрать либо предыдущее, либо следующее слово и завернуть его внутрь .selection
было бы не так уж и плохо.
Вот jsfiddle: http://jsfiddle.net/m6Qx4/
Окружающие тексты также могут содержать HTML-теги, такие как: <i>
, <b>
, <span>
и <ul>/<li>
могут присутствовать, что затрудняет синтаксический анализ.
Есть идеи, как это можно сделать?
Обновление статуса:
Мне действительно удалось заставить его работать с .click();
слушателем событий, используя мои собственные методы jQuery.
В конце концов, я заменю события щелчка на jQuery UI, перетаскиваемый для выбора окружающих слов, если он пригоден для использования на мобильных устройствах.
Моя текущая ошибка заключается в изменении положения красных кареток. Я попытался уничтожить их и добавить / добавить обратно, но он все еще не работает. Это может быть ошибка Firefox, которая не может правильно перезагрузить DOM после изменений, внесенных в текстовые узлы?
Ссылка: jsFiddle
< br /> Чтобы проверить рабочее состояние jsFiddle.net из-за недавних отключений, посетите их Твиты.
console.info
в вашем jsFiddle вам может потребоваться использовать переменнуюlastWordArray
вместоlastWord
, поскольку это было предыдущее исправление. Не уверен, что нужно изменить. - person arttronics   schedule 30.06.2012