javascript - 如何在 Bootstrap 3 选项卡上应用悬停?
问题描述
.tab-pane
当鼠标从 移出到 时,.tab
如何向此代码添加功能以使 保持在页面上.tab-pane
?并且仅当鼠标悬停在.tab-pane
?
$(".presentation").hover(function(){
var target = $(this).data("target");
$(target).addClass('in active');
}, function(){
var target = $(this).data("target");
$(target).removeClass('in active');
});
.tab-pane{
background:#eee;
height:120px;
Padding:20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<div class="container">
<div>
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation"><a class="presentation" data-target="#home">Home</a></li>
<li role="presentation"><a class="presentation" data-target="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li>
<li role="presentation"><a class="presentation" data-target="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li>
<li role="presentation"><a class="presentation" data-target="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade" id="home">Home</div>
<div role="tabpanel" class="tab-pane fade" id="profile">profile</div>
<div role="tabpanel" class="tab-pane fade" id="messages">messages</div>
<div role="tabpanel" class="tab-pane fade" id="settings">settings</div>
</div>
</div>
</div>
解决方案
您可以使用jQuery 的relatedTarget属性eventObject
传递给hover
事件的第二个处理程序:
$(".presentation").hover(
function() {
var target = $(this).data("target");
$(target).addClass('in active');
},
function(event) {
var target = $(this).data("target");
var targetId = target.replace('#', '');
var relatedTarget = $(event.relatedTarget);
if (relatedTarget.attr('id') === targetId) {
return;
}
$(target).removeClass('in active');
}
);
但是您还需要mouseleave
在元素上绑定事件处理程序.tab-pane
才能正确隐藏它们。
$('.tab-pane').on('mouseleave', function() {
$(this).removeClass('in active');
})
推荐阅读
- sql-server - 在一天中的特定时间之后 - 哪种方法更好?
- c - 如何使用 i2c 程序和树莓派(C 语言)配置霍尔效应传感器(si7210)
- php - 为什么我自己跟踪代码时得到的输出是 20 而我得到的是 16?
- javascript - 在节点的顶层使用异步等待初始化多个数据库
- android - 预期 BEGIN_ARRAY 但在 gson、android、改造时出现 BEGIN_OBJECT 错误
- mysql - 日期列的正确索引 - 在 - 另一个日期列查询之前
- python - .copy() 不会创建深拷贝
- excel - Vba - 将 formcontrol 组合框导入 VBA 代码
- weather-api - 如何从 NOAA 天气 API 获取湿度
- java - 为什么 LinkedBlockingQueue 方法在抢锁之前要重新定义 takeLock 和 putLock?