2014-05-14 17 views
8

Tôi đang cố gắng tạo menu bằng cách sử dụng thanh bên có nút, mỗi nút có cửa sổ bật lên được chỉ định chứa dữ liệu có liên quan. Thật không may, một trong các cửa sổ bật lên có thể chứa một số hàng tùy ý và trong một số trường hợp, nó có thể nằm ngoài khung nhìn.giữ cửa sổ bật lên bootstrap bên trong khung nhìn

Xem http://jsfiddle.net/bfd9f/1/ cho một ví dụ về vấn đề này (nhấp vào nút "Nhiệm vụ")

Tôi nghĩ tôi có thể lập trình thay đổi hàng đầu của popover đến một giá trị xác định, khi tiêu cực (tức là ngoài chế độ) và để làm điều này , Tôi đã quản lý để có được một tham chiếu đến div đầu tiên của cửa sổ popover trong khi nghe sự kiện show.bs.popover. Thật không may, tôi nghĩ do thực tế là nó không được trả lại, nó dường như có kích thước (23, 107) trong khi nó phải là một cái gì đó như (300, xxx) và một vị trí của (0, 0).

Có cách nào để giải quyết vấn đề này không? có thể hiển thị offover offscreen đầu tiên để đo nó? nếu có, tôi sẽ làm như thế nào?

Cảm ơn

Trả lời

10

cố định trong v3.2.0 Bootstrap sắp tới tôi tin rằng: http://jsfiddle.net/pkP77/1/

Courtesy trong những tính năng mới được giới thiệu trong viewporthttps://github.com/twbs/bootstrap/pull/12328

+0

Đó chính xác là những gì tôi cần. Tôi không nghĩ 3.2 là ra được nêu ra .. nó có nghĩa là tôi phải lấy js từ fiddle? – SirePi

+0

Bạn có thể lấy nó từ https://github.com/twbs/bootstrap/tree/master/dist/js – cvrebert

+0

Xin lỗi vì sự chậm trễ nhưng tôi đã bận rộn; Tôi đã thử bằng cách sử dụng phiên bản liên kết nhưng tôi đã có một số vấn đề, cụ thể là bởi vì trong những ngày này tôi đã thay đổi từ thiết lập nội dung thông qua $ (obj) .html() để $ (obj) trực tiếp. Điều xảy ra là lần đầu tiên tôi nhận được thông qua popover một cách chính xác, nhưng sau khi đóng nó $ (obj) bị xóa khỏi dom và không thể được hiển thị lại. Bây giờ tôi quản lý bằng cách hợp nhất một số dòng từ bootstrap 3.2 đến 3.1.1 và nó có vẻ hoạt động chính xác. Bạn có muốn thấy những gì tôi đã thay đổi không? – SirePi

3

Bạn luôn có thể ghi đè giá trị top của popover sử dụng !important Điều này có thể không phải là kế hoạch dài hạn tốt nhất vì nó có thể gây trở ngại cho CSS tương lai thay đổi

.popover { 
     width: 300px !important; 
     top: 0px !important; 
    } 

http://jsfiddle.net/smurphy/x9hnk/

Cập nhật:

Tắt sự kiện bạn m entioned này dường như làm việc.

$('.btn-popover').on('shown.bs.popover', function (event) { 
    //Set timeout to wait for popup div to redraw(animation) 
    setTimeout(function(){ 
     if($('div.popover').css('top').charAt(0) === '-'){ 
      $('div.popover').css('top', '0px'); 
      var buttonTop = $(event.currentTarget).position().top; 
      var buttonHeight = $(event.currentTarget).height(); 
      $('.popover.left>.arrow').css('top', buttonTop + (buttonHeight/2)); 
     } 
    },100); 
}); 

http://jsfiddle.net/smurphy/e6YaY/2/

này gắn vào mũi tên với nút bấm của bạn. enter image description here

+0

Tôi đã nghĩ về điều đó .. tiếc là nó sẽ ảnh hưởng đến tất cả popovers (xem có hiệu lực trên nút "Người dùng"), trong khi tôi chỉ muốn thay đổi những thứ bên ngoài khung nhìn (điều tương tự có thể xảy ra ở phía dưới .. Tôi chưa biết có bao nhiêu nút tôi sẽ có trong thanh bên). – SirePi

+0

Bạn có thấy câu trả lời này http://stackoverflow.com/a/10937083/1217018 –

+0

Có, tôi đã làm. Tôi đã đọc nó một lần nữa trong trường hợp tôi bị mất một cái gì đó nhưng vẫn không phải là thứ tôi cần. Ngay cả khi bạn sử dụng một hàm, hàm đó chỉ có thể trả về một trong các giá trị được hỗ trợ để định vị chú giải công cụ liên quan đến phần tử kích hoạt nó. Đối với tôi, không có sự lựa chọn: nó phải được để lại. – SirePi

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