javascript - 将鼠标悬停在特定列表元素上时显示文本

标签 javascript jquery html css

我面临的挑战是如何将鼠标悬停在 V 形上以显示包含其他信息的文本框。我在网上进行了广泛的搜索,但是我所做的每一次尝试都没有成功。

$('#breadcrumb li a').hover(function () {
    var a = $(this).attr('href').slice(1)
    $('.info div').removeClass('active');
    $('.info .' + a).addClass('active')
})

$('#breadcrumb li a').on('mouseleave', function () {
    $('.info div').removeClass('active');
})

这是 jsfiddle:https://jsfiddle.net/9aet4kfj/

最佳答案

你遇到了各种各样的问题。

这是一个可运行的 jsFiddle行得通。

  1. 您没有加载 jQuery。注意:即使在加载 jQuery 之后,您将此脚本放在哪里也很重要,因为您没有将它放在 document.ready 函数中,它仍然可能会失败。
  2. 您的 CSS 中有一些错误。例如,display: relative 无效 - 我已修改为 display: block
  3. 我重构了 javascript,使其在语义上更加正确。使用 href 和 class 标签是一种“hack”,最好使用 data- 标签。

修改后的脚本如下所示:

// no-conflict safe document-ready
jQuery(function($) {
  // switched to 'mouseover', using 'on' (from 'hover')
  $('#breadcrumb li a').on('mouseover', function() {
    // switched to using data attributes instead of href
    var id = $(this).data('toggle-id');
    $('.info div').removeClass('active');
    // switched to using data attributes instead of class
    $('.info [data-content-id="' + id + '"]').addClass('active')
  });

  $('#breadcrumb li a').on('mouseleave', function() {
    $('.info div').removeClass('active');
  });
});

关于修改后的 HTML 和 CSS,请参见上面的 jsFiddle。

另外 - 根据我上面的评论 - 这绝对可以用纯 CSS 完成,如果你能够修改布局/标记的话。

关于javascript - 将鼠标悬停在特定列表元素上时显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58220789/

相关文章:

javascript - vue中如何使用download属性?

javascript - Safari 和 Chrome 中的跨域 AJAX 调用

javascript - jstree 不兼容的复选框和类型插件

javascript - 将模态转换为 div

javascript - jQuery 使用 chickedinner.js 从数组中加载随机图像,在 Chrome 中返回 'undefined'

javascript - 如果这些属性已经在 J​​S 中被操纵,则媒体查询不再更新 CSS 属性

Javascript 获取与父元素相比的范围

javascript - 如何附加按钮的值然后将其改回

javascript - 如果屏幕宽度 <= 699,则交换图像 src

javascript - 从 infiniteCarousel 中移除 Infinity