我想在一个容器(DIV)中取出一堆 HTML,然后让用户选择其中的一部分。它不是我正在寻找的“可编辑区域”。因为我们不希望用户能够覆盖/更改文本。标记一下。
用户选择它后,我想知道选择了什么,但也想知道选择的部分在哪里。
例如。
我们有一个项目符号列表,用户选择项目符号行 3 和 4。
我们有一些 Headline1 和三个段落。然后用户选择中间段落的一部分。我想知道那段的位置。
我进行了一些研究,据我了解,MSIE 在选择方面存在问题,如果涉及到选择的 startPos 和 endPos。
其次,如果标记的文本在整个容器内多次出现怎么办?
这是一个例子:
<div id="markable">
<h1>Here is a nice headline</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque non
tempor metus. Ut malesuada posuere nunc eu venenatis. Donec sagittis tempus
neque, tempus iaculis sapien consectetur id.</p>
<p>Nulla tempus porttitor pellentesque. Curabitur cursus dictum felis quis tempus.
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia
Curae; Quisque fringilla massa id libero commodo venenatis.</p>
<ol>
<li>here is a bullet line #1</li>
<li>here is a bullet line #2</li>
<li>here is a bullet line #3</li>
<li>here is a bullet line #4</li>
<li>here is a bullet line #5</li>
<li>here is a bullet line #6</li>
</ol>
<h2>here is a sub-headline</h2>
<p>Aenean auctor fringilla dolor. Aenean pulvinar tortor sed lacus auctor cursus.
Sed sit amet imperdiet massa. Class aptent taciti sociosqu ad litora torquent
per conubia nostra, per inceptos himenaeos. Fusce lectus neque, rhoncus et
malesuada at, blandit at risus. Vivamus rhoncus ante vel erat mollis
consequat.</p>
</div>
问题就在这里,如果用户选择“tempus”它不足以知道这个词,我还需要知道它是哪个词(什么段落/标题/项目符号元素)。
原因是我们希望“读者”能够发现感兴趣/关注的事物。有时是整个段落,有时只是一个单词或标题。
完美的解决方案
如果我们能以某种方式检测到选择的 DOM 中的哪个“元素”(我猜是从顶部开始计数)。其次,该特定元素中有多少(起点和终点)。
因为那时我们可以对我们的 ASP.NET 执行某种 Ajax,它告诉后端已标记的内容,然后执行任何操作......
我发现一些在线代码编辑器可以完成上述的一堆 + 比需要的更多,但相信解决方案在这个上要简单得多。只是找不到开始使用 jQuery 解决方案的正确方法。
希望 jQuery Yoda 能读到这篇文章。:-)