将高光绑定到另一个元素
Bind rangy highlight to another element
我正在尝试实现基于突出显示的评论,类似于 Medium.com 上的评论,用户可以突出显示某些文本并将评论与该文本相关联。使用 Rangy,我可以使用元素属性 onclick 回调来获取突出显示 id,然后我可以使用它来切换关联的注释并使其显示为"活动"。我无法弄清楚的是如何做相反的事情 - 单击注释并向关联的突出显示元素添加一个类以使它们具有"活动"外观。
或者,有没有办法根据突出显示 id 一次应用一个突出显示,而不是使用反序列化并应用所有以前的突出显示?我想我可以解析序列化的注释并在字符串中搜索我要查找的 id,但我认为一定有一种我在文档中找不到的更干净的方法。
有什么想法吗?
我想出了一个解决方案。创建突出显示后(在我的例子中,它添加一个元素,其class="note"
类似于 Rangy 荧光笔模块演示),我可以遍历所有注释并添加一个 data 属性来识别它是哪个突出显示的一部分:
$(".note").each ()->
highlight = highlighter.getHighlightForElement($(this)[0])
$(this).attr("data-highlight-id", highlight.id)
编辑:我找到了更好的解决方案
创建注释时,我现在正在保存与该注释一起的序列化突出显示。在创建一个新的之前,我调用 highlighter.removeAllHighlights() 以确保注释仅存储其自己的序列化突出显示。然后,我可以使用该信息在用户单击评论时重新创建突出显示。只需清除所有突出显示并反序列化属于单击的评论的突出显示即可。
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 按我自己的类克隆另一个元素的内容和顺序
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- jquery从另一个元素中移除移除
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 使用数据属性将HTML数据复制到另一个元素
- 将鼠标悬停在Angular JS中的一个元素上,并将Class添加到另一个元素中
- 在类JavaScript选择的另一个元素中选择一个标记元素
- 只要存在,就用另一个元素替换一个元素
- 初学者反应查询(如何删除一个元素并附加另一个元素)
- 将jquery ui窗口的父元素设置为另一个元素
- 如何激活下拉菜单:在一个元素上单击768px宽度下方,在另一个元素上将鼠标悬停在768px上方
- Pixijs将元素附加到另一个元素
- JavaScript:将输入范围行为链接到另一个元素
- 如何使用元素's属性值,以针对jQuery中具有相同属性值的另一个元素
- angularjs阵列拼接到另一个元素
- 另一个元素JAVAscript中的元素位置
- 当鼠标也在触摸另一个元素时,d3.js鼠标悬停事件未被触发
- 将元素的可见性绑定到另一个元素