JQuery Overlay загружает только один раз - PullRequest
1 голос
/ 08 мая 2011

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

<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 для наложения.

1 Ответ

1 голос
/ 08 мая 2011

Если я правильно понимаю ваш вопрос, вы хотите контролировать свой оверлей, когда его загружать и когда закрывать, зависит от некоторых условий. Как сказано на сайте инструментов 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
    })
})

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

...