单击外部关闭所有 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();
}
};
我的网页上有一个带有基本弹出窗口的 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();
}
};