2014-05-14 11 views
8

Her biri ilgili verileri içeren atanmış bir popolu düğmelerle bir kenar çubuğu kullanarak bir menü oluşturmaya çalışıyorum. Ne yazık ki, popoverlerden biri rasgele sayıda satır içerebilir ve bazı durumlarda kısmen görünümün dışında olabilir.Bootstrap popover'ını viewport içinde saklayın

ben programlı tanımlanmış bir değere popover en üst değiştirebilir düşünce

(click "Görevler" butonuna) konunun bir örnek için http://jsfiddle.net/bfd9f/1/ bakın ne zaman (görüntü alanı dışında yani) negatif ve bunu yapmak için Ben zaten show.bs.popover olay dinlerken popover ilk div bir referans almak başardı. Maalesef, henüz işlenmemiş olması nedeniyle, (300, xxx) ve (0, 0) pozisyonunda olması gereken bir boyutta (23, 107) olduğu görülüyor.

Bu sorunu çözmenin bir yolu var mı? Belki de bunu ölçmek için önce poponun ön camını açar mı? eğer öyleyse, bunu nasıl yapardım? Gelecekteki CSS ile müdahale edebileceğiniz gibi

Teşekkür

cevap

10

inanıyorum: http://jsfiddle.net/pkP77/1/

ben çoktan düşündüm .. ne yazık ki bütün popovers etkileyecek https://github.com/twbs/bootstrap/pull/12328

+0

Tam olarak ihtiyacım olan şey bu. 3.2'in henüz çıkmış olduğunu sanmıyorum .. j'den kemanı almam gerektiği anlamına mı geliyor? – SirePi

+0

Bunu https://github.com/twbs/bootstrap/tree/master/dist/js adresinden alabilirsiniz – cvrebert

+0

Gecikme için özür dilerim ama meşguldüm; Bağlantılı sürümü kullanmayı denedim, ancak bazı sorunlarım vardı, çünkü bu günlerde içeriğin $ (obj) .html() ile $ (obj) arasında doğrudan ayarlanmasını değiştirdim. Olan şey, ilk kez popover tarafından doğru bir şekilde aldığım, ancak kapattıktan sonra $ (obj) domtan silinip tekrar gösterilememesidir. Şimdilik bootstrap 3.2'den 3.1.1'e kadar bazı satırları birleştirerek başardım ve düzgün çalışıyor gibi görünüyor. Ne değiştiğimi görmek ister misin? – SirePi

3

Hep

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

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

değiştirir Bu en iyi uzun vadeli bir plan olmayabilir !important kullanarak popover ait top değerini geçersiz kılabilir

Güncelleştirme:

Etkinliğinizden çıkmak için Bu girişmiş gibi görünüyor.

$('.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/

Bu düğmesiyle oku hizalar. Yaklaşan Bootstrap v3.2.0 giderilen enter image description here

+0

tanıtılan yeni viewport özelliğin Nezaket (bkz "Kullanıcı" butonu üzerindeki etkisi), sadece bir şekilde viewport'un dışına gidenleri değiştirmek istiyorum (aynı durum altta olabilir. Kenar çubuğunda ne kadar buton göreceğimi henüz bilmiyorum). – SirePi

+0

Bu cevabı gördünüz mü http://stackoverflow.com/a/10937083/1217018 –

+0

Evet. Bir şeyi özlediğim halde okudum ama yine de ihtiyacım olan şey değil. Bir işlev kullansanız bile, bu işlev, araç ipucunu tetikleyen öğeye göre konumlandırmak için desteklenen değerlerden yalnızca birini döndürebilir. Benim için başka seçenek yok: bırakılmalı. – SirePi