2

我正在使用引导选项卡功能,我想实现以下功能:

  1. 使用 mouseenter 而不是单击在选项卡之间切换
  2. 防止点击链接上的动作。

这是我的 jsfiddle 示例代码。 https://jsfiddle.net/irider89/bmLpwtqb/3/

$('.nav li a').hover(function (e) {
    e.preventDefault()
    $(this).tab('show');
});

$('.nav li a').click(function (e) {
    return true;
});

这怎么可能实现?

我需要能够单击主菜单项(主页、个人资料、消息、设置)并转到特定的 url。

4

5 回答 5

4

不要用window.location.href = ...方法!鼠标中键将不起作用。


1)悬停切换。在文档对象上绑定一个简单的 mouseenter 处理程序:

$(document).on('mouseenter', '[data-toggle="tab"]', function () {
  $(this).tab('show');
});

2) 防止点击。最好使用.off('click', ...)方法来重置 Bootstrap 内置处理程序,而不是编写处理自定义数据属性的自定义单击处理程序。像这样:

$(document).off('click.bs.tab.data-api', '[data-toggle="tab"]');

然后使用 nativehref指定外部链接并data-target指向内容窗格。


还有一个小的 Bootstrap 插件可以自动完成所有这些:https ://github.com/tonystar/bootstrap-hover-tabs 。

演示

于 2015-06-22T16:52:53.720 回答
1

使用一些新的“data-”属性来提及 url,如下所示

<a href="#home" aria-controls="home" role="tab" data-toggle="tab" data-href="www.google.com">Home</a>

并像这样使用脚本

 $('.nav li a').on("click",function (e) {
          window.location.href = $(this).attr("data-href");
    });
于 2015-06-10T11:55:20.090 回答
0

使用这个去网址:

$('.nav li a').click(function (e) {
   window.location.href = $(this).attr("href");
});
于 2015-06-10T10:39:41.043 回答
0

您可以简单地使用此代码来实现该功能 1,在悬停时更改选项卡

$('.nav-tabs li').hover(function(){
    $('.nav-tabs li a').removeClass('active show');
    $(this).children('a').addClass('active show');
    var href = $(this).children('a').attr('href');
    href = href.substr(1);
    $('.tab-pane').removeClass('active show');
    $('#'+href).addClass('active show');
});

对于下一个功能,添加此代码以禁用单击

$('.nav-tabs li').click( function(e){
    e.prevenetDefault(); 
}
于 2018-09-13T07:12:04.917 回答
0

尝试这个:

//first, we need to show tab-content on mouseover
$(".nav-link").mouseover( function() {
    $(this).tab("show");
});

// on hovering quickly, need to remove the active class from the related tab panel
$(".nav-link").on("show.bs.tab", function(e) {
    const tabPanelId = e.relatedTarget.getAttribute("href");
    $(tabPanelId).removeClass("active");
});
于 2021-06-23T19:12:26.220 回答