从元素

时间:2016-08-29 12:42:08

标签: javascript html angularjs angular-ui-bootstrap

我有一个文本元素,当文本被截断时显示工具提示。我想在元素的文本不再被截断时删除工具提示。问题是我无法得到工具提示的事件。我通过在截断时将属性设置为元素来添加工具提示。但是,删除该属性不会删除该事件,工具提示仍会显示。我正在使用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>

1 个答案:

答案 0 :(得分:1)

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

修改

如果你肯定你想要的是完全删除事件监听器那么我担心这会涉及写一个decorator但是非常混乱(甚至是hacky)的方式但是如果您只是在文本变得完全可见时关闭工具提示,则可以使用tooltip-enabletooltip-is-open的组合轻松完成,例如shown in this plunk