【问题标题】:hide div when clicking outside the container with jquery使用 jquery 在容器外单击时隐藏 div
【发布时间】:2012-12-26 15:37:27
【问题描述】:

我想在他们点击时隐藏一个 div。为此,我有这段代码可以完美运行:

var box3=$(".despcnt"); box3.mouseup(函数(){ 返回假; }); $(this).mouseup(function (a) { if(!($(a.target).parent(".despcnt").length>0)){ box3.removeClass("dino");box3.hide() } });

但我想从课程中排除。 Despcnt 具有类 despcnt 的链接,因此当在书房外单击或关闭相同的链接时...没有尝试放置它不起作用。

有什么想法吗?

HTML

<a class="desplcnt" href="#">Link</a>
<div class="despcnt">
    <ul>
        <li><a data-value="1" href="#">Title</a></li>
    </ul>
</div>

【问题讨论】:

  • 请澄清问题所在 - 真的很难理解你想说什么
  • 第二段是什么意思?
  • 代码工作正常,当他们在 div 外部单击时关闭。但是如果你点击链接。 Desplcnt 没有关闭,这就是我想要的。不明白的地方见谅,我用谷歌翻译
  • @jon90,这有帮助吗? jsFiddle
  • 是的,对……但我不工作。可能是因为我有despcnt隐藏的div吗?并用 jquery 打开它。

标签: jquery hide show-hide


【解决方案1】:
var $despcnt = $(".despcnt");

/* Hide the popup whereas clicking outside */
$(document).on("click", function() {
  $despcnt.hide();
});

/* Don't hide the popup whereas clicking inside */
$despcnt.on("click", function(evt) {
    evt.stopPropagation();
});

【讨论】:

    【解决方案2】:

    因此,当您单击标题时,您希望隐藏链接。但是当你点击其他任何地方时,你想隐藏标题吗?如果是这样,您可以分配Title 一个mouseup 事件,然后从那里隐藏链接,然后使用e.stopPropagation() 以绕过在使用this 时附加到窗口的全局mouseup。这是一个演示:http://jsfiddle.net/pUnvR/1/

    代码如下:

    html

    <a class="desplcnt" href="#">Link</a>
    <div class="despcnt">
     <ul>
        <li><a data-value="1" href="#">Title</a></li>
     </ul>
    </div>
    

    js

    var box3=$(".despcnt");
    box3.mouseup(function (e) {
        $(".desplcnt").hide();
        e.stopPropagation();
    });
    
    $(this).mouseup(function (a) {
        if(!($(a.target).parent(".despcnt").length>0)){
            box3.removeClass("dino");
            box3.hide();
        }
    });
    

    【讨论】:

    猜你喜欢
    • 2014-03-29
    • 2012-07-17
    • 2011-09-20
    • 2013-08-28
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多