2014-10-03 112 views
0

我想在此示例中使用一個簡單的模式窗口http://jqueryui.com/dialog/,以便在頁面主體在特定位置向下滾動時向上浮動。它可以是右上角,右下角或中間右側。使用jQuery浮動模態窗口

我用他的代碼:

$(function() { 

    $("#dialog").dialog({ 
     maxHeight: 200, 
     width: 400, 
     autoOpen: true, 
     show: { 
      effect: "blind", 
      duration: 1000 
     }, 
     hide: { 
      effect: "explode", 
      duration: 1000 
     } 
    }); 
    $("#opener").click(function() { 
     $("#dialog").dialog("open"); 
    }); 

    $(window).scroll(function() { 

     //after window scroll fire it will add define pixel added to that element. 
     set = $(document).scrollTop() + "px"; 

     //this is the jQuery animate function to fixed the div position after scrolling. 
     $('#dialog').animate({ top: set }, { duration: 1000, queue: false }); 


    }); 
}); 

怎麼過,這隻會浮在對話而不是整個窗口內的文本。

任何幫助將非常理解:)

+0

請讓一個jsfiddle並把代碼。 – 2014-10-03 16:41:51

+0

我試過,但沒有工作... html代碼是一樣的http://jqueryui.com/dialog/ – Aslan 2014-10-03 16:42:42

+0

你的位置:絕對'css? – Ohgodwhy 2014-10-03 16:46:30

回答

1

嘗試「#dialog」選擇更改爲「的.ui-對話框」

$(window).scroll(function() { 

    //after window scroll fire it will add define pixel added to that element. 
    set = $(document).scrollTop() + "px"; 

    //this is the jQuery animate function to fixed the div position after scrolling. 
    $('.ui-dialog').animate({ top: set }, { duration: 1000, queue: false }); 
}); 

因爲$('#對話')一旦對話框由jQuery UI創建,就會轉換爲新的DOM元素,並且新的DOM元素可以通過$('。ui-dialog')

+1

這是正確的。旁註:男人,持續時間1000,這將是一個醜陋的過渡。哦,它不會轉換成一個新的DOM元素,如果那樣的話事件將不得不被反彈導致性能下降,而是調用'.wrap()'。 – Ohgodwhy 2014-10-03 16:51:23

+1

@Ohgodwhy謝謝澄清 – madushak 2014-10-03 16:54:00

+0

謝謝@madushak! – Aslan 2014-10-03 17:56:08