Обработчик или источник события select
Устанавливает обработчик выделения текста внутри элемента или , либо, запускает это событие. Данное событие может происходить только в элементах <textarea> и <input type="text">. Метод имеет три варианта использования:
Устанавливает функцию handler в качестве обработчика события select, на выбранные элементы.
Метод является аналогом bind("select", handler(eventObject)).
handler(eventObject) — функция, которая будет установлена в качестве обработчика. При вызове она будет получать объект события eventObject.
Метод отличается от предыдущего возможностью передавать в обработчик дополнительные данные.
Является аналогом bind("select", eventData, handler(eventObject)).
handler(eventObject) — см. выше.
eventData — дополнительные данные, передаваемые в обработчик. Они должны быть представлены объектом в формате: {fName1:value1, fName2:value2, ...}.
Вызывает событие select, у выбранных элементов страницы. Метод является аналогом trigger("select").
Убрать установленный обработчик можно с помощью метода unbind().
Все три варианта использования метода, являются аналогами других методов (см. выше), поэтому все подробности использования select(), можно найти в описании этих методов.
В случае выделения текста с помощью мыши, браузеры вызывают событие select при завершении выделения. Если выделение происходит с помощью нажатия клавиш ← ↑ → ↓ при зажатом shift'е, то событие будет происходить при каждом отпускании клавиши со стрелкой.
Для того, чтобы получить выделенную часть текста в разных браузерах требуются разные средства. В FireFox и Google Chrome выделенную часть даст метод window.getSelection() или document.getSelection(), в то время как IE и Opera предоставят нужный текст при вызове метода document.selection.createRange(). Кроссбраузерный вариант будет выглядеть так:
function selectedText() { if(window.getSelection) txt = window.getSelection().toString(); else if(document.getSelection) txt = document.getSelection(); else if(document.selection) txt = document.selection.createRange().text; return txt; }
Отметим, что функция selectedText() будет работать не только для <textarea> и <input type="text">, она будет возвращать выделенный текст, в каком бы элементе (элементах) он не находился.
Пример
// установим обработчик события select, элементу с идентификатором foo $('#foo').select(function(){ alert('Внутри элемента foo, пользователем был выделен текст.'); }); // вызовем событие select на элементе foo $('#foo').select(); // установим еще один обработчик события select, на этот раз элементам // с классом block. В обработчик передадим дополнительные данные $('.block').select({a:12, b:"abc"}, function(eventObject){ var externalData = "a=" + eventObject.data.a + ", b=" + eventObject.data.b; alert('Внутри элемента с классом block был выделен текст'+ 'В обработчик этого события переданы данные: ' + externalData ); });