JQuery Overlay загружается только один раз

Я пишу веб-приложение, в котором я хочу программно загрузить наложение JQuery на событие onClick div. вот html код div

<div class="button_left"
            onClick="manageAlert('/abc/com')"><span>Click here</span></div>

а вот и оверлейный div

<div id="ad_alert_wizard">This is test</div>

и код JavaScript выглядит следующим образом.

function manageAlert(url)
{
    if(url=="")
    {
          $("#ad_alert_wizard").overlay({
                // custom top position
                top: 260,

                // some mask tweaks suitable for facebox-looking dialogs
                mask: {

                    // you might also consider a "transparent" color for the mask
                    color: '#000000',

                    // load mask a little faster
                    loadSpeed: 200,

                    // very transparent
                    opacity: 0.5
                },

                // disable this for modal dialog-type of overlays
                closeOnClick: false,

                //load it immediately after construction
                load: true
            });
    }
    else
    {
        location.href=url;
    }
}

теперь проблема в том, что когда я нажимаю на div, оверлей загружается в первый раз правильно... и после его закрытия, когда я снова нажимаю на div, он не загружается, пока я не обновлю страницу. В чем может быть ошибка. Я использую JQuery Tools для наложения.


person Muhammad Ummar    schedule 08.05.2011    source источник
comment
Почему у вас есть $(document).ready внутри function?   -  person Grant Thomas    schedule 08.05.2011
comment
ооо, извините, я просто тестировал код с разными трюками.. этого на самом деле не было... позвольте мне удалить это..   -  person Muhammad Ummar    schedule 08.05.2011


Ответы (1)


Если я правильно понимаю ваш вопрос, вы хотите контролировать свой оверлей, когда его загружать и когда закрывать, зависит от некоторых условий. Как сказано на сайте инструментов jQuery, все его элементы имеют некоторый API, и вы должны его использовать. Прежде всего, создайте и настройте оверлей, я рекомендую использовать $(document).ready, например:

$(document).ready(function () {
          //create vars for some performance reasons
          var adwiz = $("#ad_alert_wizard"),
              adOver = {};

          //setup your overlay object;
          adwiz.overlay({
                //do not load it automatically;
            load: false
                //... some other configuration options ...  
          });

          //take access to the overlay object and it's API;
          adOver = adwiz.data('overlay');

          //It's your click handler function
          // You can control your overlay as you wish.
         function manageAlert(url){
           if(url==""){
            adOver.load(); //show your overlay whenever you want
           }
          else{
            location.href=url;
          }
    }

 // set your event handlers inside the script, not in the DOM element (it's not cool)
    $('.button_left').click(function () {
        manageAlert(''); // call your handler function
    })
})

Код можно реорганизовать, но идея состоит в том, чтобы получить доступ к вашему оверлейному объекту, чтобы управлять им.

person Johnner    schedule 08.05.2011
comment
Спасибо, на самом деле я уже решил эту проблему, и да, вы правы.. это как-то так же, как вы описали.. Еще раз спасибо.. за вашу ссылку, где я нашел рабочий пример моей проблемы, и решение Излишняя загрузка один раз - person Muhammad Ummar; 09.05.2011