【问题标题】:Position Div onClick, and hide when clicked outside定位Div onClick,并在外部单击时隐藏
【发布时间】:2014-05-11 02:42:02
【问题描述】:

我有一个明显隐藏的类.toggleBox 的div。单击input 时,我的JavaScript 可以显示.toggleBox div,但是如果单击.toggleBox div 之外的任何位置,我不确定如何再次隐藏该div。

我想根据当前状态以及点击是发生在.toggleBox 内部还是外部来切换该框,使其隐藏或显示。

这是一个小提琴http://jsfiddle.net/SJVz5/

这里是 HTML、JavaScript 和 CSS:

HTML:

<div class="container">
    <label for="myInput">Click in input</label>
    <input type="text" class="js-input" id="myInput" />
    <div class="toggleBox">
        Some information
    </div>
</div>

JavaScript:

$('.js-input').click(function() {
    $('.toggleBox').css({
        top : 22 + 'px',
        left : 91 + 'px'
    });
});

CSS:

.container {
    position: relative;
}

.toggleBox {
    position: absolute;
    top: -99999px;
    left: 99999px;
    padding: 15px;;
    border: 1px solid black;
}

【问题讨论】:

标签: javascript jquery css


【解决方案1】:

我已经更新了你的脚本,请检查一下:http://jsfiddle.net/SJVz5/3/,我希望这是你想要的

你必须添加event.stopPropagation();

【讨论】:

  • 效果很好!我不知道 event.stopPropagation()。请问,为什么toggleBox 有一个包含$(this).show() 的.click() 方法?由于它已经显示可以删除还是我错过了什么?非常感谢!
【解决方案2】:

似乎我有点晚了,但我有一个更简单的答案,代码更短 http://jsfiddle.net/Godinall/SJVz5/4/

$('html').click(function () {
    $('.toggleBox').toggle().css({
        top: 22 + 'px',
        left: 91 + 'px'
    });
});

$('.toggleBox').click(function (event) {
    event.stopPropagation();
});

【讨论】:

  • 谢谢!我只是在评论,对event.stopPropagation() 并不熟悉。我在 Google 上搜索了一段时间,看到了一个名为 .toggle() 的旧 jQuery 方法,它可能对我有所帮助,但已被弃用。谢谢!
  • @Mdd 你弄错了两个toggle()。一个像你说的那样被弃用,这是一种方法(JQuery API),另一个是显示/隐藏元素的动画效果,这正是最适合你的需求。请参阅此处api.jquery.com/toggle 它仍然处于活动状态,您可以从演示中看出,因为您使用的是最新的 JQuery 库,并且显然演示有效!
猜你喜欢
  • 2018-12-26
  • 1970-01-01
  • 2012-07-17
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
相关资源
最近更新 更多