JQuery захватить значение слова
Есть ли способ получить значение слова с помощью jquery или javascript? в примере:
Поиск: Котировки месяца на май
Когда я нажимаю "Поиск", "Цитаты" или любое другое слово, я предупреждаю текст этого слова?
Обновить:
Вот что я имел в виду:
Есть ли способ получить текстовое значение, не заключая его в какой-либо элемент HTML?
2 ответа
Вы не можете сделать это, не оборачивая это в узлы HTML. Вы можете применить магию Javascript к "развернутому тексту", что в основном означает Textnode
, Это может выглядеть так:
$('#foo').contents().each(function(_, node) {
var nodelist = node.textContent.split(/\s/).map(function( word ) {
return $('<span>', {
text: word + ' ',
click: function() {
alert( $(this).text() );
}
}).get(0);
});
$('#foo').empty().append(nodelist);
});
демо: http://jsfiddle.net/LFCWp/
Я только что записал это. Потенциал оптимизации по-прежнему существует, но он должен дать вам базовое представление о том, как его реализовать.
Чтобы найти конкретные слова в длинных абзацах, вам нужно создать объекты Range и TextRange, чтобы найти координаты конкретных слов в абзаце. После того, как вы сопоставили координаты для каждого слова, вы можете сопоставить координаты события щелчка окна со словом, которое находится в пределах диапазона.
Вопрос в позиции Получение текстового узла DOM имеет некоторые сходства с тем, что вы ищете.
Короче говоря, я думаю, что должно быть вполне выполнимым, чтобы точно получить слово, на которое нажимают, даже в более длинных абзацах, но это, конечно, не очень легко, а для более длинных фрагментов текста это может оказаться очень неэффективным.
отредактируйте для браузеров mozilla / webkit, вы можете сделать это следующим образом:
$(document).ready(function() {
$("body").click(function(){
var s = window.getSelection();
s.modify('extend','backward','word');
var b = s.toString();
s.modify('extend','forward','word');
var a = s.toString();
s.modify('move','forward','character');
alert(b+a);
});
});
пример: http://jsfiddle.net/niklasvh/rD2uE/
Это не работает в IE <= 8, однако, вам, вероятно, нужно будет принять другое решение, используя выбор IE.