javascript - JQuery - 单击,通过重置禁用鼠标悬停

标签 javascript jquery html css

我目前有一个远离图像弹出的工具提示。但是,我似乎无法在悬停的同时进行点击。我想要实现的是让弹出窗口在用户单击图像时保持可见,并在用户在弹出框外单击时禁用它,但是,如果用户将鼠标悬停在图像中并隐藏时,它将是可见的用户将鼠标悬停在图像之外。我不太确定如何解决这个问题。

http://jsfiddle.net/BZ4M7/

HTML

<div class="tooltip">
<div class="description"> Here is the big fat description box</div>
</div>

CSS

.tooltip {
    border: 1px #333 solid;
    width:200px;
    height:200px;
    background-image:url('http://mathworld.wolfram.com/images/gifs/sqtripic.gif');
}
.description {
    display:none;
    position:absolute;
    border:1px solid #000;
    width:400px;
    height:400px;
    left: 50%;
    top: 50%
    background: #000000;
}

JS

$(".tooltip").mouseover(function() {
    $(this).children(".description").show();
}).mouseout(function() {
    $(this).children(".description").hide();
});

var isShown;
$(".tooltip").mousedown(function() {
    if (isShown == false){
        $(this).children(".description").show();
        isShown = true;
    }
}).mousedown(function() {
    if (isShown == true){
        $(this).children(".description").hide();
        isShown = false;
    }
});

任何帮助将不胜感激! :) 谢谢!

最佳答案

对您的 CSS 进行以下添加/更改后:

.tooltip {
    position: relative;
}
.description {
    left: 102%;
}

以及对您的 JS/jQuery 的以下更改:

$(".tooltip").mouseenter(function (e) {
    $(this).children(".description").show();
}).mouseleave(function() {
    if (isShown === false) {
        $(this).children(".description").hide();
    } else {
        e.preventDefault();
    }
});

isShown = false;
$(".tooltip").click(function (e) {
    if (isShown === true) {
        e.preventDefault();
        $('.description').hide();
        isShown = false;
    } else {
        $(this).children('.description').show();
        isShown = true;
    }
});

除了通过在 .tooltip 之外单击来隐藏 .description 之外,我认为这可以完成您想要的。目前没有任何东西可以点击。

这是一个 fiddle :http://jsfiddle.net/BZ4M7/1/

关于javascript - JQuery - 单击,通过重置禁用鼠标悬停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23277779/

相关文章:

javascript - 基于单选选择的模态图像作为数组索引

javascript - 在仪表板中添加 ControlWrapper 筛选器设置时发生错误。这有什么问题吗?

javascript - 为什么 JavaScript 中的以下代码不会将当前日期向前移动五天?

javascript - 如果最后一行已显示,如何防止 jQuery 加载更多停止功能

html - 具有相同源 src 的多个图像 <img> 标签

css - 父 DIV 的默认定位被忽略

javascript - 如果名称和值与输入复选框字段匹配,请检查复选框

jquery - 有效使用sweetalert确认和取消

javascript - jQuery 函数扩展的范围问题

javascript - 如何平滑滚动到 div 中间的不同跨度