Shadowbox - Как переключать или заменять контент?Как закрыть и открыть другой диалог? - PullRequest
5 голосов
/ 08 ноября 2011

Я пытаюсь использовать shadowbox несколько раз: иногда мне требуется более одного диалога одновременно.

В этом простом примере я пытаюсь закрыть одно существующее окно и заново открыть другоеодин, но не открывается второй.Что я делаю не так?

<!DOCTYPE HTML>
<html>
<head>
    <link rel="stylesheet" href="shadowbox.css" type="text/css">
    <style type="text/css" media="screen">
        #sb-body, #sb-loading { background:#eee; }
    </style>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script>
    <script src="shadowbox.js" type="text/javascript" charset="utf-8"></script>

    <script type="text/javascript">

        Shadowbox.init();

        window.onload = function(){

            Shadowbox.open({
                content: 'First window. <a id="open-second" href="http://www.google.com">open another window</a>.',
                player: "html"
            });

            $('#open-second').live('click', function(e){
                e.preventDefault();

                Shadowbox.close();
                Shadowbox.open({
                    content: 'Second window.',
                    player: "html"
                });
            });
        };
    </script>
</head>
<body>blabla.</body>
</html>

С уважением,
Adit

Ответы [ 2 ]

1 голос
/ 11 ноября 2011

Извините, но я думаю, что перейду к colorbox, так как он кажется гораздо более стабильным:

$('#second-btn').live('click', function(e){
  e.preventDefault();
  $.colorbox({
    onComplete: function(){
      $('#cboxLoadedContent').append('second opened');
      $('#cboxClose').attr('id', 'cboxClose_disabled');
    },
    html:'<p>Second <a id="first-btn" href="x">first</a></p>',
    width: 500, height: 200
  });
});

function showfirst(){
  $.colorbox({
    onLoad: function(){ $('#cboxClose_disabled').attr('id', 'cboxClose'); },
    onComplete: function(){ $('#cboxLoadedContent').append('first opened') },
    html:'<p>First <a id="second-btn" href="x">second</a></p>',
    width: 500, height: 200
  });
}

$('#first-btn').live('click', function(e){
  e.preventDefault();
  showfirst()
});

showfirst();

Эй, я говорю один ?! XD

0 голосов
/ 09 ноября 2011

Вот что я буду использовать; не доволен этим как:
- Я заставляю широко используемый плагин выполнять простую задачу (закрыть окно и открыть другое)
- он должен переопределить каждую функцию shadowbox (теперь реализован только игрок "html").

Здесь полный рабочий пример .

var shadowbox_orig_open = Shadowbox.open;
Shadowbox.reOpenable = function(new_opts) {
    if(Shadowbox.isOpen()){
        // close other dialog
        Shadowbox.options.onClose(Shadowbox.getCurrent());

        if(new_opts.player == "html"){
            $('#sb-player').fadeOut('normal', function(){ $(this).html(new_opts.content).fadeIn(); });
        }else{
            // ???
        }

        // set other new hooks
        Shadowbox.options = new_opts.options;
    }else{
        shadowbox_orig_open(new_opts);
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...