我正在尝试学习jQuery和弹出窗口。我通过谷歌发现这个代码很好用。 问题是,这个设计只允许通过这个javascript创建一个弹出窗口。我看到作者写道;
如果你想为每个弹出窗口创建多个弹出窗口,你需要创建一个javascript对象,那么你就可以创建弹出对象的多个实例。
更新:下面是我正在使用的代码。我试过你的方式,但仍然没有快乐。现在我不能用我理解的方式创建和弹出窗口。 我把它带回到下面,仍然有问题。赞美帮助我。我不明白这很难做到。
/***************************/
//@Author: Adrian "yEnS" Mato Gondelle
//@website: www.yensdesign.com
//@email: yensamg@gmail.com
//@license: Feel free to use it, but keep this credits please!
/***************************/
var popupStatus = 0;
function loadPopup()
{
if(popupStatus == 0)
{
$("#backgroundPopup").css({
"opacity": "0.09"
});
$("#backgroundPopup").fadeIn("slow");
$("#myPopup").fadeIn("slow");
popupStatus = 1;
}
}
function disablePopup()
{
if(popupStatus == 1)
{
$("#backgroundPopup").fadeOut("slow");
$("#myPopup").fadeOut("slow");
popupStatus = 0;
}
}
//centering popup
function centerPopup()
{
//request data for centering
var windowWidth = document.documentElement.clientWidth;
var windowHeight = document.documentElement.clientHeight;
var popupHeight = $("#myPopup").height();
var popupWidth = $("#myPopup").width();
$("#myPopup").css({
"position": "absolute",
"top": windowHeight / 2 - popupHeight / 2,
"left": windowWidth / 2 - popupWidth / 2
});
$("#backgroundPopup").css({
"height": windowHeight
});
}
$(document).ready(function(){
$("#displaypopup").click(function(){
//centering with css
centerPopup();
//load popup
loadPopup();
});
//CLOSING POPUP
//Click the x event!
$("#popupClose").click(function(){
disablePopup();
});
//Click out event!
$("#backgroundPopup").click(function(){
disablePopup();
});
//Press Escape event!
$(document).keypress(function(e){
if(e.keyCode == 27 && popupStatus == 1){
disablePopup();
}
});
});
答案 0 :(得分:0)
您可以尝试将此函数和更重要的popupStatus
转换为隔离对象,因此popupStatus
可以与网页中的许多不同jQuery对象不同。
我看起来像:
function PopUP(backgroundPopup, popupContact)
{
/***************************/
//@Author: Adrian "yEnS" Mato Gondelle
//@website: www.yensdesign.com
//@email: yensamg@gmail.com
//@license: Feel free to use it, but keep this credits please!
/***************************/
//SETTING UP OUR POPUP
//0 means disabled; 1 means enabled;
this.popupStatus = 0;
//loading popup with jQuery magic!
//notice $("#backgroundPopup") -->
this.loadPopup = function(){
//loads popup only if it is disabled
if(popupStatus == 0)
{
$(backgroundPopup).css({
"opacity": "0.7"
});
$(backgroundPopup).fadeIn("slow");
$(popupContact).fadeIn("slow");
popupStatus = 1;
}
}
//disabling popup with jQuery magic!
this.disablePopup = function (){
//disables popup only if it is enabled
if(popupStatus == 1)
{
$(backgroundPopup).fadeOut("slow");
$(popupContact).fadeOut("slow");
popupStatus = 0;
}
}
//centering popup
this.centerPopup = function (){
//request data for centering
var windowWidth = document.documentElement.clientWidth;
var windowHeight = document.documentElement.clientHeight;
var popupHeight = $(popupContact).height();
var popupWidth = $(popupContact).width();
//centering
$(popupContact).css({
"position": "absolute",
"top": windowHeight / 2 - popupHeight / 2,
"left": windowWidth / 2 - popupWidth / 2
});
//only need force for IE6
$(backgroundPopup).css({
"height": windowHeight
});
}
}
请注意,您不能硬编码 ID
弹出元素,每个弹出窗口都需要有不同的ID。这就是为什么这个函数中有参数,它也是一个对象。
所以你会像这样用来创建这个函数类的实例:
//Click the button event!backgroundPopupID
backgroundPopupID = "#backgroundPopup";
popupContactID = "#popupContact";
var popup1 = new PopUP(backgroundPopupID ,popupContactID);
$("#button").click(popup1.centerPopup(),popup1.loadPopup());//not sure if this works
我实际上并不经常使用JavaScript对象,所以我可能会删除popupStatus
而不是我会添加一个类来弹出,所以我可以检查弹出是启用还是禁用。您可以使用$(selector).hasClass(className)
和$(selector).addClass( className )
。您还应该使用弹出选择器对每个函数进行参数化(就像上面的示例中的此函数类一样)。
答案 1 :(得分:0)
我花了几个小时来修改这个JavaScript的代码,但我放弃了,并寻找一个更简单的解决方案。我选择colorbox非常方便易用。
http://www.aobaba.com/_multiplepopup/
你可以从这里下载包: http://www.aobaba.com/_multiplepopup/colorbox_multiplepopup.zip