0

我有一个嵌套在 textarea 中的跨度,并且想要获取此跨度相对于文档的偏移量。left 和 top 总是返回零,我不知道为什么。

这是一个带有以下代码的jsFiddle来演示

$(document).ready(function(){
  $("#textarea1").html("1234 <span id='span1' style='color:red'>5678</span>");
  var offset = $("#span1").offset();
  alert("span1 left: " + offset.left + "  top: " + offset.top);
});

我明白为什么跨度的位置相对于文本区域为零。但我不明白为什么偏移量返回零。如果有人可以在这里帮助我,我将不胜感激。


编辑:我的目标是在单击时将某些内容定位在跨度之上。我无法获得上面提到的跨度的偏移量,所以我决定改用鼠标坐标。

$("#id").dblclick(function(e){
 alert("X: " + e.pageX + " Y: " + e.pageY);
});
4

1 回答 1

2

DOM 没有意识到这一点,span因为它只是包含在valuetextarea 的属性中。

为了计算页面上的 x,y 坐标,您需要跟随文本区域中的字符/行并计算放置光标的大致位置。这不是一项简单的任务,主要是因为计算自由流动文本的换行符(尤其是没有等宽字体的情况下具有挑战性)。

于 2013-01-08T20:39:54.280 回答