Если ваш элемент содержит только текст, вы можете заключить символ во встроенный элемент и получить положение элемента, используя .offset()
. Затем поместите исходный текст обратно. Скрипка: http://jsfiddle.net/Dp6JR/
var $elem = $('.mycooldiv');
var text = $elem.html();
var newText = text.replace(/#/, '<span class="get-position-of-it"></span>');
$elem.html(newText); //Set wrapper
var offset = $(".get-position-of-it").offset();
$elem.html(text) ; //Place back
var topPos = offset.top;
var left = offset.left;
Примечание: эта функция получает позицию первого найденного #
символа. Если вы хотите получить положение всех символов, добавьте g
к регулярному выражению (/#/g
).
Получение всех позиций - Скрипка: http://jsfiddle.net/Dp6JR/1/
Смещения всех символов будут сохранены в двумерном массиве (матрице).
var positions = [];
var $elem = $('.mycooldiv');
var text = $elem.html();
var newText = text.replace(/#/g, '<span class="get-position-of-it"></span>');
$elem.html(newText); //Set wrapper
$(".get-position-of-it").each(function(){
var offset = $(this).offset();
positions.push([offset.left, offset.top]);
});
$elem.html(text) ; //Place back
//`positions` is an array of all offset information
Вывод может быть эквивалентен:
var positions = [
[0, 0],
[100, 0]
];