Возможность комментирования iWork, возможно ли это реализовать с помощью JQUERY

StackOverflow https://stackoverflow.com/questions/2246874

  •  20-09-2019
  •  | 
  •  

Вопрос

У iWork есть возможность выделить текст, а затем пометить комментарий к этому тексту.Затем комментарий связывается строкой с выделенным текстом.

alt text

Мне любопытно, можно ли что-то подобное реализовать в JQUERY.Что меня озадачило, так это:A.Как нарисовать линию и обновить ее, когда пользователь изменяет текст B.Как выделить текст и каким-то образом пометить его?

Я хотел бы услышать ваши мысли о том, возможно ли это вообще с помощью JQUERY, и любые идеи или плагины, которые укажут мне правильное направление.

Это было полезно?

Решение

Да, это не очень сложно сделать.

Во-первых, вам нужно получить событие выбора

Событие выбора отправляется элементу, когда пользователь выделяет текст внутри него.Это событие ограничено полями и прямоугольниками.

Например, рассмотрим HTML:

<form>
  <input id="target" type="text" value="Hello there" />
</form>
<div id="other">
  Trigger the handler
</div>

Обработчик события может быть привязан к вводимому тексту:

$('#target').select(function() {
  alert('Handler for .select() called.');
});

ВИДИШЬ: http://api.jquery.com/select/

Второе - вам нужно создать тег

CSS - файл

<style>
body{font-size:12px; font-family:"Trebuchet MS";}
#content1{
border:1px solid #CCCC33;
padding:10px;
margin-top:10px;
width:500px;
}
</style>

(X)HTML

<a href="#" id="click">Something Here</a>
<div class="box">
<div id="content1">

<p><a href="#" id="close">Close</a></p>
</div>
</div>
</body>

Как вы можете видеть, это очень простой пример, но польза от него практически безгранична!

Теперь перейдем к коду jQuery, который делает все эти обалденные вещи.Что я собираюсь сделать, это Показать и скрыть элемент Content1 Div.Для этого я создал приведенный ниже код jQuery, взгляните, затем я пройдусь по нему.

$(document).ready(function(){

$('#content1').hide();

$('a').click(function(){
$('#content1').show('slow');
});

$('a#close').click(function(){
$('#content1').hide('slow');
})

});

Как я упоминал ранее, $(document).ready(function()} - это функция, которая ожидает, пока страница не будет готова к работе, прежде чем выполнять код внутри нее.

Следующая строка $('#content1').скрыть();Скрывает Content1 Div для начала.Обратите внимание, как существует связь между jQuery и CSS в том, что в данном случае используется идентификатор, но он мог бы использовать класс точно таким же образом, как аргумент внутри круглой скобки.

Затем мы переходим к следующему разделу кода, который “Показывает” DIV при нажатии на связанный текст.$('a).щелкните(функция(){});Это вызывает функцию “click”, а затем вызывает эффект “show” для содержимого 1 Div.

Прочтите код еще раз и убедитесь, что вы уловили логику.Мне тоже потребовалось некоторое время , чтобы освоиться с этим !!!

Внутри этого Div, который отображается и скрывается, есть еще одна текстовая ссылка, которая скроет Div.

$('a#close').click(function(){
$('#content1').hide('slow');
})

Если вы посмотрите на это, вы можете увидеть, что любой элемент “a” (ссылка) с идентификатором “close” вызовет эффект “скрыть” для содержимого 1 Div.

ВИДИШЬ: http://dreamweaverspot.com/jquery-show-and-hide-a-div/

Третье - Проведите свою линию

Скачать плагин для jQuery SVG - http://jquery.com/plugins/project/svg

Подведи свою черту

$("#example1").drawLine(0, 0, 220, 45);

ВИДИШЬ: http://www.openstudio.fr/Library-for-simple-drawing-with.html

Вот и все.Просто соедините все это вместе, чтобы получилось так, как вы хотите.

Другие советы

Возможно, вашим ответом могло бы стать что-то столь простое, как всплывающая подсказка.Я использовал qtip ( подсказка) плагин в прошлом, и он имеет эффекты, которые вы ищете.

Взгляните на веб-сайт:

http://craigsworks.com/projects/qtip/

Использование qtip идеально подходило бы для сохранения информации, размещенной над документом.

Что касается выбора определенных частей текста документов, у Тодда там лучший метод, и я также нашел этот вопрос SO:

Выделение текста в элементе (аналогично выделению с помощью мыши)

Как только вы выделите текст, я бы заключил его в промежуток с id, и используйте qtip совет в виде строки (указывающей на рассматриваемый интервал).Это может быть сделано "на лету" и любого размера, как описано здесь:

http://craigsworks.com/projects/qtip/docs/tutorials/#tips

Это интересный способ использования плагина qtip, я надеюсь, что часть этой информации помогла вам.

Маркус.

Тодд в основном описал почти все, что вам нужно сделать здесь, помимо написания заявки для вас.Вам нужно иметь в памяти два списка;один из комментариев и один из тегов, а также способ связать их в DOM (уникальные идентификаторы).Я бы посоветовал ознакомиться с похожими сообщениями о том, как переместить элемент относительно положения прокрутки окна.Вам понадобится какой-то способ определить, какие теги видны в любой момент времени, и я подозреваю, что вы можете сделать это с помощью одной из стандартных функций позиционирования jquery;то же самое необходимо для проведения линии между двумя элементами.Простой поиск дает http://api.jquery.com/position/.После того как вы определили, какие теги видны, вы можете повторно заполнить элемент пользовательского интерфейса comments соответствующими комментариями, найти их расположение и провести линию от помеченного элемента к элементу comment.Если вам также нужна возможность редактировать комментарии и вы ожидаете, что они будут сохранены без отправки формы, вам понадобится база данных и вызов ajax для сохранения комментариев после завершения редактирования.

Если вы говорите о поле ввода текста, это будет намного сложнее, и я не думаю, что вы могли бы сделать это с любым из стандартных элементов ввода очень легко.Я бы проверил один из существующих текстовых редакторов, который может предоставить некоторые из этих функций (YUI?) и объединить его с вашим плагином.

Что касается линий рисования, я предоставил доступ к коду из моего собственного вопроса и ответа

Как провести грань между перетаскиваемым и сбрасываемым?

Деталь с БИРКОЙ шьется достаточно легко, когда вы можете работать с Плагин выбора поля jQuery

надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top