2010-07-17 2 views
0

У меня есть два divs, один - фон, а другой - контейнер для vid, который находится поверх первого. Другой div служит кнопкой, которая при нажатии на нее запускает лайтбокс. Вот мой код:jQuery lightbox problem

//0 means disabled; 1 means enabled; 

var popupStatus = 0; 
var buttonDivID = ""; 
var conDivID = ""; 

//determine which div is clicked 

function whichDiv(div) { 
    if(div==1){ 
     buttonDivID = "#vid"; 
     conDivID = "#popupContact"; 
    } 
} 

//loading popup with jQuery magic! 

function loadPopup(){ 

    //loads popup only if it is disabled 

if(popupStatus==0){ 

    $("#backgroundPopup").css({ 

     "opacity": "0.7" 

    }); 

    $("#backgroundPopup").fadeIn("slow"); 

    $(conDivID).fadeIn("slow"); 

    popupStatus = 1; 
} 
} 

//disabling popup with jQuery magic! 

function disablePopup(){ 

//disables popup only if it is enabled 

if(popupStatus==1){ 

    $("#backgroundPopup").fadeOut("slow"); 

    $(conDivID).fadeOut("slow"); 

    popupStatus = 0; 
    buttonDivID = ""; 
    conDivID = ""; 
} 
} 

//centering popup 

function centerPopup(){ 

//request data for centering 

var windowWidth = document.documentElement.clientWidth; 

var windowHeight = document.documentElement.clientHeight; 

var popupHeight = $(conDivID).height(); 

var popupWidth = $(conDivID).width(); 

//centering 

$(conDivID).css({ 

    "position": "absolute", 

    "top": windowHeight/2-popupHeight/2, 

    "left": windowWidth/2-popupWidth/2 
}); 

//only need force for IE6 

$("#backgroundPopup").css({ 

    "height": windowHeight 

}); 
} 

//CONTROLLING EVENTS IN jQuery 

$(document).ready(function(){ 

//LOADING POPUP 

//Click the button event! 

$(buttonDivID).click(function(){ 

    //centering with css 

    centerPopup(); 

    //load popup 

    loadPopup(); 
}); 


//CLOSING POPUP 

//Click the x event! 

$("#popupContactClose").click(function(){ 

    disablePopup(); 

}); 

//Press Escape event! 

$(document).keypress(function(e){ 

    if(e.keyCode==27 && popupStatus==1){ 

     disablePopup(); 
    } 
}); 
}); 

я должен отметить, что я не создал этот код, я просто изменил его, чтобы соответствовать моим потребностям. Проблема здесь в том, что когда я нажимаю в любом месте страницы, кроме кнопки div, появляется фоновый div лайтбокса. И когда я закрываю контейнер vid, фон div остается видимым, чего я не хочу. Не могли бы вы рассказать мне, что не так с моим кодом?

ответ

1

Возможно, мне что-то не хватает, но похоже, что buttonDivID устанавливается только в функции whichDiv, которая никогда не вызывается. Я бы начал там ...

+0

Это называется на странице html:

Нужно ли мне называть его внутри слушателя (whater you call it) block? – Joann

+0

Я просто решил. Ты прав. Просто добавлена ​​строка whichDiv (div). Я не знаю, что это так тривиально. Я слишком новичок в jQuery, я думаю. :-) – Joann