【问题标题】:Removing tooltip event from an element从元素中删除工具提示事件
【发布时间】:2016-09-01 22:01:56
【问题描述】:

我有一个带有文本的元素,当文本被截断时会显示工具提示。当元素的文本不再被截断时,我想删除工具提示。问题是我无法到达工具提示的事件。我通过将属性设置为截断元素来添加工具提示。但是,删除属性不会删除事件,并且工具提示仍会显示。我正在使用Angular bootstrap tooltip。 我搜索了互联网并且 removeEventListener() 没有帮助,因为我没有工具提示事件处理程序。我能够使用和工作的唯一解决方法是在隐藏工具提示的元素上触发事件 mouseleave,而不是删除它。我认为这不是一个好方法,我需要删除该事件。 顺便说一句,我只使用 angular 和 javascript,没有 jQuery。

任何想法如何做到这一点?

编辑: 我的元素是这样的:

<span>Here goes the text</span>

添加工具提示后,元素看起来像这样

<span uib-tooltip="Here goes the text" tooltip-append-to-body="true" tooltip-placement="bottom">Here goes the text</span>

【问题讨论】:

  • 发布您的 HTML 代码。
  • 我编辑了问题并添加了html代码

标签: javascript html angularjs angular-ui-bootstrap


【解决方案1】:

您应该在属性中提供tooltip-enable 表达式,如果文本被截断,它将返回。这可以很容易地确定,如下所示:https://stackoverflow.com/a/143889/2337927。请记住,由于security issues,您不能直接在角度表达式中使用 DOM 元素。例如,您要做的是在控制器上注册 isTextOverflowing 函数并从表达式中调用它:tooltip-enable="vm.isTextOverflowing()"


编辑

如果您确定要完全删除事件侦听器,那么恐怕这将涉及编写decorator 但以非常混乱(甚至是骇客)的方式但是如果什么你要做的只是在文本完全可见时关闭工具提示,使用tooltip-enabletooltip-is-open 的组合很容易完成,例如shown in this plunk

【讨论】:

  • 我给你一个有用的答案,因为你的答案很好,但这不是我想要的。如果可能的话,我需要删除附加到该元素的事件。
  • 移除事件是指移除事件侦听器或在文本完全可见(未截断)时关闭工具提示?
猜你喜欢
  • 2017-01-18
  • 2013-10-18
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多