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

    Tôi muốn bật lên một hộp thoại không phải là toàn màn hình, tức là, nó "nổi" ở trên trang đã mở nó. Dưới đây là những gì tôi đang cố gắng:Làm cách nào để tạo một hộp thoại jQuery Mobile không phải là toàn màn hình?

    <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"); 
    } 
    

    Mặc dù tôi đã đặt giới hạn trên div của Dialog, nó vẫn ở chế độ toàn màn hình.

    +0

    Tôi biết điều này được lên kế hoạch cho 1,2 phát hành: http://filamentgroup.com/tests/popup/docs/pages/popup/index.html –

    +0

    Tôi rất sợ điều đó! – ghenne

    Trả lời

    7

    Đây là những gì tôi đã đưa ra (sau khi một số gợi ý rất lớn từ 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 là phần thưởng: nó cho thấy cách đóng hộp thoại từ mã.

    Bạn có thể fiddle với nó ở đây: http://jsfiddle.net/ghenne/Y5XVm/1/

    +0

    Tại sao điều này được đánh giá thấp? –

    +0

    làm việc tốt .... tuyệt vời ... –

    5

    Bạn có thể buộc một chiều rộng trên hộp thoại như thế này:

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

    Thông báo tôi cũng loại bỏ nền để hộp thoại có thể xuất hiện trên đầu trang của các trang khác. Vấn đề duy nhất còn lại là khi bạn điều hướng đến hộp thoại, trang kia bị ẩn để hộp thoại xuất hiện trên nền trắng.

    Đây là một bản demo: http://jsfiddle.net/jasper/TTMLN/

    Đây là một điểm khởi đầu cho bạn, tôi nghĩ cách tốt nhất để tạo cửa sổ bật lên của riêng bạn là tự hiển thị/ẩn hộp thoại để jQuery Mobile không giấu trang cũ .

    Cập nhật

    Bạn chắc chắn có thể sử dụng một hộp thoại như một popup với một lượng nhỏ mã hóa tùy chỉnh:

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

    đâu dialog-link là ID của liên kết mở ra hộp thoại như một popup.

    Đây là một bản cập nhật nhỏ về CSS để tập trung các phương thức theo chiều ngang:

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

    Và đây là một bản demo: http://jsfiddle.net/jasper/TTMLN/1/

    +0

    Tôi cần sử dụng changePage, chứ không phải html = "# dialog". Khi tôi làm điều đó, các thiết lập nền trong css dường như bị bỏ qua. Nghiêm trọng hơn, trang gọi bị ẩn. Có vẻ như điều này sẽ phải chờ đợi sự nâng cao mà Phill ghi nhận. – ghenne

    +0

    @ghenne Tôi đã đề cập đến những vấn đề đó trong câu trả lời của tôi, tôi đã hy vọng rằng bạn sẽ cố gắng tìm ra nó ... dù sao, hãy kiểm tra ** cập nhật ** cho câu trả lời của tôi. Mã ** được cập nhật ** tạo ra một popup khá đẹp mắt. – Jasper

    +0

    Cảm ơn những lời khuyên - Tôi đã học được một vài thủ thuật mới và đã có thể áp dụng chúng trong một giải pháp đơn giản hơn. – ghenne

    0

    đây là một plugin mà u có thể use..this plugin cũng có thể tùy biến với html riêng ur.

    simpleDialogue plugin for jquery mobile

    Các vấn đề liên quan