2010-08-04 25 views
5

Nó hoạt động hoàn hảo trong firefox, nhưng ví dụ, chrome và opera nó không hoạt động.Làm thế nào để sử dụng jQuery draggable với vị trí cố định?

<div> has position:fixed, and is .draggable() 

và nó không hoạt động trừ firefox

+4

Chắc chắn, bạn không thể muốn nó được kéo và giữ vị trí tương đương? Bạn sẽ tách màn hình của mình ra. – sje397

+0

Tôi có thể. Tôi muốn nó được "cố định" trong cổng xem, nhưng tôi cũng có thể di chuyển nó một chút sang phải hoặc trái (kéo được), và nếu tôi thả nó, nó sẽ được "cố định" ở vị trí mới. – rafaello

+0

Tôi nhận được hành vi giống hệt nhau trong Chrome và FF: [ở đây] (http://jsfiddle.net/s4dhW/1/) – sje397

Trả lời

6

không thiết lập cố định trong CSS: nó hoạt động trong firefox, crom, safari, iexplore

var div = $('#id'); 
div.resizable(
{ 
    stop: function(event, ui) 
    {      
     var top = getTop(ui.helper); 
     ui.helper.css('position', 'fixed'); 
     ui.helper.css('top', top+"px");   
    }  
}); 
div.draggable(
{ 
    stop: function(event, ui) 
    {   
     var top = getTop(ui.helper); 
     ui.helper.css('position', 'fixed'); 
     ui.helper.css('top', top+"px"); 
    } 
}); 

function getTop(ele) 
{ 
    var eTop = ele.offset().top; 
    var wTop = $(window).scrollTop(); 
    var top = eTop - wTop; 

    return top; 
} 
+1

để xem nó hoạt động http://jsfiddle.net/dX8N3/ – ZiTAL

+1

Tốt đẹp! bạn cũng có thể sử dụng vị trí: cố định; để khởi tạo với một vị trí tương đối và sửa các bước nhảy đầu tiên http://jsfiddle.net/dX8N3/24/ – Wajih

1

Chỉ cần sử dụng trong CSS của bạn:

#draggable{ 
    position:fixed !important; 
} 

Nếu bạn đang sử dụng cả hai kéo và có thể tháo rời xóa "! Quan trọng" khỏi CSS, sau đó đặt dừng tùy chọn (gọi lại khi kéo và dừng thay đổi kích thước) để chức năng này:

function stop(event){ 
    if(event.type === "resizestop"){ 
     var topOff = $(this).offset().top - $(window).scrollTop() 
     $(this).css("top",topOff) 
    } 
    $(this).css("position","fixed")  
} 
Các vấn đề liên quan