单击外部关闭所有 Highslide

Close all Highslide on click outside

我的网页上有一个带有基本弹出窗口的 Highslide 插件,我需要的是当用户在外部单击时所有打开的弹出窗口都应该关闭。

尝试过但没有成功:

   hs.close();

这可能有帮助:http://forum.highcharts.com/highslide-js-usage/multiple-hs-close-t22148/

但是,如果您没有使用调暗背景,则在扩展器外部单击不会将其关闭。怎么可能呢?您可能正在单击另一个缩略图来打开它 - 它无法区分。

在我的控制台上做了一些研究后,我想到了这个解决方案并且工作得很好..

$(document).mouseup(function (e)
{
    if($(".highslide-wrapper").length==0)
        return;

    var container = $(".highslide-wrapper");

    if (!container.is(e.target) 
        && container.has(e.target).length === 0) 
    {
        for (var i = 0; i < hs.expanders.length; i++) {
            var exp = hs.expanders[i];
            if (exp) exp.close();
        }
    }
});

而且您还可以检查点击的元素是否是另一个缩略图..

hs.Expander.prototype.onInit = function(sender) {
    for (var i = 0; i < hs.expanders.length; i++) {
        var exp = hs.expanders[i];
        if (exp) exp.close();
    }
};