Программное повторение наложения инструментов jQuery

У меня есть еще один вопрос новичка об инструментах jQuery (http://flowplayer.org/tools/overlay/index.html). У меня есть оверлей, который запускается при нажатии на изображение, с кодом, который выглядит примерно так в теле html.

<img id = "shark" src = "http://static.guim.co.uk/sys-images/Education/Pix/picture
s/2000/11/13/shark.jpg" alt = "click" />

<div id = "overlayFrame">
    <div id = "overlayContent"></div>
</div>

<script type= "text/javascript">
    var clickable = document.getElementById('shark');
    clickable.onmousedown = ImageClick;
    
    function ImageClick(e)
    {
        console.log("image clicked");
        $("#overlayFrame").overlay
        ({
            mask: 'darkgrey',
            oneInstance: false,
            
            onBeforeLoad: function()
            {
                var wrap = this.getOverlay().find("#overlayContent");
                wrap.load("overlay.htm");
            },
            
            load: true
        });
    }
</script>

Я хочу, чтобы оверлей появлялся каждый раз, когда нажимается изображение. Прямо сейчас «щелкнутое изображение» выводится на консоль каждый раз, когда изображение щелкается, но наложение происходит только в первый раз. Как я могу изменить этот код, чтобы наложение происходило каждый раз?


person Tuck    schedule 05.08.2011    source источник
comment
в каком плагине есть функция overlay()?   -  person Einacio    schedule 05.08.2011
comment
извините, что не опубликовал это, вот ссылка flowplayer.org/tools/demos/overlay/trigger .html   -  person Tuck    schedule 05.08.2011
comment
я думаю, что в onBeforeLoad это должно быть $(this), так как обычно это внутри события jQuery является элементом dom, но у меня нет времени тестировать ваш код прямо сейчас. если это так, это сломает ваш js   -  person Einacio    schedule 05.08.2011
comment
Где должен находиться $(this) в onBeforeLoad?   -  person Tuck    schedule 05.08.2011
comment
Ах, это то, что вы имели в виду, я чувствую себя глупо сейчас. Но да, изменение с «this» на «$(this)» полностью его ломает.   -  person Tuck    schedule 05.08.2011
comment
Я думаю, вам нужно сделать это где-то в вашем коде. $(#overlayFrame).show()   -  person Sushanth --    schedule 11.09.2012


Ответы (1)


Я не тестировал ваш конкретный код, но я решил ту же проблему, что и возможность программно повторять загрузку, каждый раз вызывая overlay().load(). Я думаю, это сработает для вас. См. последнюю строку ниже:

<script type= "text/javascript">
var clickable = document.getElementById('shark');
clickable.onmousedown = ImageClick;

function ImageClick(e)
{
    console.log("image clicked");
    $("#overlayFrame").overlay
    ({
        mask: 'darkgrey',
        oneInstance: false,

        onBeforeLoad: function()
        {
            var wrap = this.getOverlay().find("#overlayContent");
            wrap.load("overlay.htm");
        },

        load: true
    }).load(); // This is the only code I added
}
</script>
person Matt Schwartz    schedule 14.12.2012