javascript - 父工具提示应覆盖子工具提示

标签 javascript html css

考虑这个 HTML:

<div title="parent tooltip">
 <a title="child tooltip">child</a>
 <a title="child tooltip 2">child 2</a>
</div>

当您将鼠标悬停在某个子项上时,会出现该子项的工具提示。当您将鼠标悬停在子项周围的死 Angular 上,但在父级内部时,将出现父级的工具提示。我该怎么做才能让 parent 的工具提示无处不在?

蛮力解决方案是使用 JS 删除所有子工具提示,只要父工具提示设置了标题。当父项的标题被删除时,JS 会放回工具提示。对于大型文档来说,这将是过度处理,因此我希望有一个更高效的解决方案。

我为什么要这样做?我有一个 JS 函数来禁用整个元素。它基本上向元素添加了一个类,使其看起来淡出并使其具有不可放置的光标。当您将鼠标悬停在禁用的元素上时,工具提示会显示“您不能使用此...等等”。如果子元素触发它的工具提示,那就很奇怪了。 child 可能会说“单击此处执行此操作”之类的话 - 这将是糟糕的用户体验,因为 parent 已被禁用。

function disable(element) {
 element.writeAttribute('title', 'you cannot use this');
 element.addClassName('disabled');
}

function enable(element) {
 element.writeAttribute('title', null);
 element.removeClassName('disabled');
}

最佳答案

您拥有的 HTML 标记基本上明确地告诉浏览器按照您观察到的方式执行操作。您唯一可以做的就是应用 JavaScript 来摆脱有问题的元素的“标题”属性,或者(更好)当您不想显示标题文本时,不要首先将标题属性放在元素上。

我遇到过这种情况,具体如下。在我的网络应用程序中,我有一点“这是什么?”功能,涉及显示在可能需要解释的事物附近的小“[?]”图标。您单击小图标,弹出“帮助气泡”。这是一个很常见的功能。无论如何,可点击的小东西被实现为 <div>那是绝对定位的,并且“气泡”在词法上嵌套在其中,带有“position:relative”。可点击的图标有自己的“标题”属性,但当然,当显示帮助气泡时,我不希望该标题显示为天桥文本,因为它很奇怪。因此,我打开气泡的 JavaScript 代码必须在气泡打开时将父元素的“标题”属性存储在 jQuery“.data()”存储中,并在气泡关闭时恢复标题。

关于javascript - 父工具提示应覆盖子工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5214636/

相关文章:

javascript - 使用 CakePHP 将 Bootstrap 代码片段中的 JavaScript 代码放在哪里?

html - 使用 Bootstrap 时,我应该在哪里放置 HTML5 语义标签?

javascript - 隐藏 div 单击 NO 单选按钮

html - 无法固定 flexbox 盒子的宽度

javascript - 如何在 chrome 扩展中加载内容脚本而不单击扩展图标

javascript - Polymer:如何动态导入一个元素

javascript - 如何自定义CKEditor图片上传对话框的设计?

html - CSS - 段落中的断字,每个字母都在其他元素中

javascript - 如何在调整大小时对齐元素中心?

javascript - 无法读取属性,试图制作一个应用程序要求用户输入年龄和姓名