我有以下标记:
<!-- first marker -->
<div class="marker"></div>
<div class="tooltip">
<p>My tooltip content"</p>
</div>
<!-- second marker -->
<div class="marker"></div>
<div class="tooltip">
<p>My tooltip content"</p>
</div>
<!-- repeating..... -->
以及以下jQuery javascript:
$(document).ready(function() {
$(".marker").hover(function(event){
$('.tooltip').hide();
$(this).next('.tooltip').slideDown('fast');
});
});
如何修改此脚本,以便在悬停所有其他打开的div.tooltips时隐藏除下一个?目前它试图隐藏所有。
答案 0 :(得分:3)
您可以使用not
功能省略特定元素
$(".marker").hover(function(event){
var nextEl = $(this).next("div.tooltips");
$('.tooltip').not(nextEl).hide();
$(this).next('.tooltip').slideDown('fast');
});
修改强>
此外,您可能还希望将第二个函数传递给hover
,以便在悬停结束时清理内容:
$(".marker").hover(function(event){
var nextEl = $(this).next("div.tooltips");
$('.tooltip').not(nextEl).hide();
$(this).next('.tooltip').slideDown('fast');
}, function() {
$('.tooltip').hide();
});
答案 1 :(得分:1)
下面的代码应该可以解决问题,
$(document).ready(function() {
$(".marker").hover(function(event){
//$('.tooltip').hide();
$(this).next('.tooltip').eq(0).slideDown('fast');
}, function (event) {
$('.tooltip').hide();
});
});
注意:您需要实现mouseleave功能才能正确显示/隐藏工具提示
答案 2 :(得分:0)
我知道有一个not()函数可以排除某些元素。我从来没有用过它,但它一定是你要找的东西。
答案 3 :(得分:0)
你有没有这样你可以通过id或别的东西得到它?因为jQuery中有:not()选择器
答案 4 :(得分:0)
问题是因为您将hover
与一个函数一起使用,这意味着它尝试在mouseover
和mouseout
上显示工具提示。如果您提供两个功能,一个显示,一个隐藏工具提示,它可以工作:
$(document).ready(function() {
$(".marker").hover(function(event){
$('.tooltip').hide();
$(this).next('.tooltip').slideDown('fast');
},
function(event){
$('.tooltip').slideUp('fast');
});
});