我使用的是MagnificPopup与beforeClose回调,我想这取决于条件,取消其打开。我怎样才能做到这一点 ?
我试过一回false
或$.magnificPopup.close();
但它仍然打开...
我敢肯定,有一个基本的解决方案!
谢谢
这是一个有点棘手,但你可以通过直接在初始化时打开弹出做到这一点:
var popupDefaults = {
type: 'inline',
fixedContentPos: false,
fixedBgPos: true,
overflowY: 'auto',
closeBtnInside: true,
}
$('.open-popup-link').on("click", function(){
var condition = false;
if(!condition){
$(this).magnificPopup(popupDefaults).magnificPopup('open');
}
});
如果您更改条件true
,弹出不会打开。
你可以做的是能够覆盖创建弹出,如果你的条件为真JavaScript函数。喜欢:
var originalOpen = window.open;
if (condition) {
//prevent open new window
window.open = function(){return null;};
}
// after window open attempt
window.open = originalOpen
你可以用警报做到这一点,任何消息框。
另一种方法是修改magnificPopup ...
disableOn: function(){
if ($(window).width() <= 768){
return false;
}
return true;
}
(可选):这不会停止DOM元素触发弹出窗口的默认行为。
如果您使用的是加载在一个弹出一个YouTube视频中的锚标记:
为了阻止这种情况发生,加上对DOM元素的单击处理额外的检查:
// Stop an anchor tag's default behavior
// Otherwise if it's a Youtube video, clicking this DOM element will land users on Youtube
$("a.my-popup").on("click", function(){
if ($(window).width() <= 768){
return false;
}
});