jquery-mobile
  • dialog
  • 2012-03-01 10 views 5 likes 
    5

    Chciałbym wyświetlić okno dialogowe, które nie jest w trybie pełnoekranowym, tzn. "Pływa" nad stroną, która je otworzyła. Oto, co próbuję:Jak utworzyć okno dialogowe jQuery Mobile, które nie jest w trybie pełnoekranowym?

    <div data-role="page" id='Page1'> 
        <div data-role='button' id="Button1">Open Dialog</div> 
    </div> 
    
    <div data-role="dialog" id='Dialog' 
        style='width:200px; height:100px; top:100px; left:100px;'> 
        <div data-role='button' id="Button2">Close</div> 
    </div> 
    
    <script> 
    
    Button1.onclick = function() { 
        //$.mobile.changePage($('#Dialog')) 
        $.mobile.changePage('#Dialog',{role:'dialog'}) 
    } 
    
    Button2.onclick = function() { 
        $(".ui-dialog").dialog("close"); 
    } 
    

    Mimo że ustawiam granice w dziale dialogowym Dialog, nadal jest to pełny ekran.

    +0

    wiem, że to jest zaplanowane na wydaniu 1.2: http://filamentgroup.com/tests/popup/docs/pages/popup/index.html –

    +0

    Bałem się tego! – ghenne

    Odpowiedz

    7

    Oto co wymyśliłem (po kilka świetnych wskazówek z Jasper) :

    <div data-role="page" id='Page1'> 
        <div data-role='button' id="Button1" >Open Dialog</div> 
    </div> 
    
    <div data-role="dialog" id='Dialog'> 
        <div data-role='header'id='Dialog_header'><h1>Dialog</h1></div> 
        <div data-role='button' id="Button2">Close</div> 
    </div> 
    
    <script> 
    
    Dialog_header.onclick= function(e){ 
        $("#Dialog").fadeOut(500); 
    } 
    
    Button1.onclick = function(e) { 
        var $dialog=$("#Dialog"); 
        if (!$dialog.hasClass('ui-dialog')) 
        {$dialog.page()}; 
        $dialog.fadeIn(500); 
    } 
    
    Button2.onclick = function() { 
        $("#Dialog").fadeOut(500); 
    } 
    

    Button2 to bonus: pokazuje, jak zamknąć okno dialogowe od kodu.

    Można bawić się z nim tutaj: http://jsfiddle.net/ghenne/Y5XVm/1/

    +0

    Dlaczego jest downranked? –

    +0

    działa dobrze ... niesamowite ... –

    5

    Można wymusić szerokość w oknie dialogowym tak:

    .ui-mobile .ui-dialog { 
        background : none !important; 
        width  : 75% !important; 
    }​ 
    

    Wskazówka Ja również usunąć tło więc dialogowe mogą pojawiać się na górze drugiej strony. Jedynym problemem pozostaje to, że po przejściu do okna dialogowego druga strona jest ukryta, więc okno dialogowe pojawia się na białym tle.

    Oto demo: http://jsfiddle.net/jasper/TTMLN/

    Jest to punkt wyjścia dla Ciebie, myślę, że najlepszym sposobem, aby stworzyć swój własny popup jest ręcznie pokazać/ukryć okno tak jQuery Mobile nie ukryć starą stronę .

    Aktualizacja

    Można oczywiście użyć okna dialogowego jako popup z niewielką ilością niestandardowym kodowaniu:

    $(document).delegate('#dialog-link', 'click', function() { 
    
        var $dialog = $('#dialog'); 
        if (!$dialog.hasClass('ui-dialog')) { 
         $dialog.page(); 
        } 
        $dialog.fadeIn(500); 
    
        return false; 
    });​ 
    

    Gdzie dialog-link jest identyfikator linku, który otwiera okno jako popup.

    Oto niewielka zmiana w CSS do wyśrodkować modal poziomo:

    .ui-mobile .ui-dialog { 
        background : none !important; 
        width  : 75% !important; 
        left  : 50% !important; 
        margin-left : -37.5% !important; 
    }​ 
    

    I tu jest demo: http://jsfiddle.net/jasper/TTMLN/1/

    +0

    Potrzebuję użyć changePage, a nie html = "# dialog". Kiedy to robię, ustawienie tła w css wydaje się być ignorowane. Co ważniejsze, strona wywołująca zostaje ukryta. Wygląda na to, że będzie to musiało poczekać na ulepszenie, które zauważyła Phill. – ghenne

    +0

    @ghenne Wspomniałem o tych problemach w mojej odpowiedzi, miałem nadzieję, że spróbujesz to rozgryźć ... w każdym razie, sprawdź ** moją ** odpowiedź. ** ** updated ** code tworzy ładnie wyglądające wyskakujące okienko. – Jasper

    +0

    Dzięki za porady - nauczyłem się kilku nowych sztuczek i byłem w stanie je zastosować w prostszym rozwiązaniu. – ghenne

    0

    o to plugin, który u można use..this wtyczki jest konfigurowalny z ur własny html.

    simpleDialogue plugin for jquery mobile

     Powiązane problemy

    • Brak powiązanych problemów^_^