【发布时间】:2015-06-19 14:31:50
【问题描述】:
下面的 JS sn-p 应该只显示与其触发器具有相同 ID 的请求弹出窗口。
例如,<a class="popup-button" data-popup="#popup-a">POPUP A</a> 应在单击时显示 ID 为 #popup-a 的弹出窗口。
但是当点击任何触发器时,它会显示页面上的所有弹出窗口,而不是来自请求的弹出窗口“具有与触发器具有其属性相同的 ID”,这是一个 JS 小提琴:http://jsfiddle.net/znq4jwdu/1/
//Popups
$('.popup-button').each(function() {
var popupId = $(this).attr("data-popup");
$.data(this, 'dialog', $(popupId).dialog({
modal: false,
open: function(){
$(".dialog").addClass("dialog-opened");
$('.popup-close').fadeIn();
$('#falseModal').fadeIn();
jQuery('#falseModal').bind('click',function(){
jQuery('.popup').dialog('close');
});
},
close: function(){
$(".dialog").removeClass("dialog-opened");
$('#falseModal').fadeOut();
}
}));
}).click(function() {
$.data(this, 'dialog').dialog('open');
return false;
});
$('.popup-close').each(function() {
$(this).on("click",function(){$(this).parents('.popup').dialog("close");});
});
$(window).resize(function() {
$(".popup").dialog("option", "position", {my: "center", at: "center", of: window});
$('.widget-overlay').show().fadeOut(800);
});
$("body").append('<div id="falseModal" style="display:none;"></div>');
【问题讨论】:
-
什么是假模型?
-
是为overlap div,与弹窗后面的内容重叠的div。我需要淡入淡出,所以我不得不添加一个额外的 div 并将其命名为 falseModal。
-
所以它只是为了创建叠加效果?
-
是的,只是为了创建叠加效果
标签: javascript jquery jquery-ui jquery-ui-dialog