【发布时间】:2017-12-22 04:42:42
【问题描述】:
我有一个 div,其中包含未知数量的 html 标签或它们的深度。例如,div 内的 HTML 可以是任意数量的标签和标签的深度。
<div id="content">
<p> Hello this is
<ul>
<li>**{I CLICK HERE}**A test<p> and some more</p></li>
</ul>
Lorem ipsum
</p>
</div>
如果我单击 {I CLICK HERE},我想获得的是从#content div 到所单击内容的父标记开头的字符编号位置。所以在这个例子中,我想要“li”标签的#content div中的字符数。
创建书签系统的最终目标是在数据库中保存位置后我可以返回到该位置,并且当将来重新加载此内容时,我可以包装该标签或在其上放置一个类以便能够滚动到该位置。
到目前为止,我可以抓取节点,但不确定如何获得它的位置。
$("#content").click(function(event) {
console.log(event.target.nodeName);
});
我的想法是,一旦我获得了职位,我就将其保存到数据库中。当页面重新加载时,我将一个锚跨度标签插入该位置,然后使用它来滚动到。我将使用服务器端代码在稍后的页面加载中放置锚点。
或者,如果有更好的方法来实现能够使用 javascript 在重新加载页面时返回(scrollTo)点击点的最终结果,请告诉我。数据将保存在数据库中,并在新的页面加载时拉回。
【问题讨论】:
-
您希望本示例中的“字符数”是多少?
-
只是为了(尝试)并且绝对清楚,您要查找的字符数是由
innerHTML字符串的this image 的选择高亮表示的字符还是其他?如果我似乎在吹毛求疵,我很抱歉,但我仍然不太确定你指的是什么,这使得我很难回答这个问题。 -
我猜你会动态加载
<li>元素,为什么不为每个项目设置唯一的id属性? -
@DavidThomas 是的,这在图片中是正确的。
-
@Gonzalo #content 中的文本例如是教育教科书的一整章。我试图让用户在文本中添加书签,无论文本是什么。内容不是动态创建的,而是从已经转换为 html 的章节的文本数据库中提取的。
标签: javascript jquery