【发布时间】:2012-12-14 21:34:46
【问题描述】:
我不明白为什么我无法获得正确的范围对象。我很难解释这个问题。
例如:我有五个 div,每个 div 包含一个短语。从逻辑上讲,如果我在其中一个 div 中触发 mousedown 事件,我可以获得事件目标。好的,这是基本的。
但是,如果我在 mousedown 事件上使用范围对象,则事件目标始终是我点击的,但 range.startContainer 指向前一个 div;
看看这个fiddle:
1 LineLineLine
2 LineLineLineLineLine
3 LineLineLineLine
4 LineLineLine
5 LineLineLineLine
重现问题的步骤(参见控制台):
- 在第一行按住鼠标按钮(控制台说“未定义”[*])
- 松开鼠标按钮(Range 现在安全地指向第一行)
- 在第四行按住鼠标按钮(控制台说“第一行”)
- 控制台显示上一个点击的行
[*] 未定义,因为文档没有范围 然而,但这无关紧要,因为我可以在飞行中创建一个并将他注入到文档中。
我可以推断出mousedown事件是在范围之前执行的..还是没有?
【问题讨论】:
-
只是一个问题:您的目标是检测选择了哪一行?
-
显然不是:D。我想在 mousedown 上获得正确的范围
-
那么,您想在这里做什么,只是确认在正确检测到范围之前触发了 mousedown?
-
不,我只想在鼠标按下时获得正确的“行范围”
-
显然是的,范围是在鼠标按下 之后创建的。你不能只使用 mouseup 吗?
标签: javascript jquery selection jquery-events rangy