如果沒有首先將其封裝在自己的元素中,您將無法獲得偏移量。你可以將每個元素包裝在它自己的元素中,沒問題。就在值映射到包含在單個元素的值,並加入起來:
var parts = $.map($('span').text().split(""), function(v){
return '<span>'+v+'</span>';
}).join("")
$('span').html(parts);
然後,您可以得到可能的任何跨度的偏移量。如果,例如,我們希望得到的在我們的原始字符串中發現的第二個0的偏移量,我們可以做像這樣:
var cords = this.find('span').filter(":contains('0')").eq(1).offset();
當你有偏差,你只需要原來的HTML字符串放回在你的父母<span>
。
如果你把所有這些組合起來,你可以讓自己一個不錯的小插件:
$.fn.letterOffset = function(v,i){
var orig = this.text(), parts = $.map(orig.split(""), function(v){
return '<span>'+v+'</span>';
}).join("");
this.html(parts);
var cords = this.find('span').filter(":contains('"+v+"')").eq(i?i-1:0).offset();
this.html(orig);
return cords;
}
要返回左偏移現在第二爲零,我們會做:
var offsetOfSecondZero = $('span').letterOffset("0",2).left
我已使用<span>
s來包裝每個字母,但您可以使用任何您想要的元素。請記住,您想使用inline
元素。
JSFiddle
只是要清楚:你要檢索的(X,Y)的範圍標記座標特定字母的頁面? –
這是可能的,但它不會*微不足道。你可以發佈你當前的動畫代碼,以便我們可以用它作爲一個起點嗎? –
這是怎麼回事? http://jsfiddle.net/wzKfX/ –