2012-08-14 26 views
20

Burada yığın akışına yayınlamak için yeni, bu yüzden bir şeyleri mahvedersem özür dilerim.Twitter Bootstrap Popovers Dinamik Olarak Oluşturulmuş İçerik için çalışmıyor

Twitter Bootstrap'ın pop'lerini kullanıyorum. Popoverler, HTML belgesine manuel olarak yazdığım öğeler için çalışıyor gibi görünüyor. Ancak, dinamik olarak Javascript/Ajax aracılığıyla oluşturduğum öğeler değil.

<p rel=popover data-content='It is so simple to create a tooltop for my website!' data-original-title='Twitter Bootstrap Popover'>hover for popover</p> 

Ama dinamik olarak oluşturulmuş elemanlar popovers olması için ne gerçekten ihtiyaç vardır:

Örneğin, popover elle benim HTML belgesine doğrudan bu eklerseniz iş gibi görünüyor. Bir PHP dosyasına istek göndermek için bir XMLHttpRequest kullanın ve sonra responseText'i yakalayın ve görüntüleyin. Benim yukarıda belirtilen PHP dosyasına kod satırını eklediğinizde:

echo "<p rel=popover data-content='It is so simple to create a tooltop for my website!' data-original-title='Twitter Bootstrap Popover'>hover for popover</p>"; 

... kesinlikle yeterli, sözler "vurgulu popover için" görünür - ancak popover kendisi çalışmıyor!

Bu bir süredir beni deli ediyor ve birisi bana yardım eli ödünç verebilirse inanılmaz olurdu! Ayrıca, Bootstrap'ın popolarını aşağıdaki değerlere göre etkinleştirmek için kullanıyorum JQuery işlevini ekledim.

$(function(){ 
$("[rel=popover]").popover({placement:'left'}); 
}); 

Ben benzer sorunlar ayrıntılı bir arama yaptık ve ben bulabildiğim en iyi this link oldu. Ama bu linkin de herhangi bir çözümü yok gibi görünüyor. Şimdiden teşekkürler!

GÜNCELLEME:

Sabit! Yardım eden herkese çok teşekkürler. Sorunum, öğelerin Belge Nesne Modeli'ne eklenmesinden ÖNCE işlevi çağrılıyordu. Birden fazla olası düzeltme var - Ben sadece çözümünü Ajax işlevinin END'üne taşıyarak çözüm denedim ve işe yaradı!

+1

koymak * gibi "rel = popover" aramak zorunda sayfadaki konumunu belirlemek zorunda AJAX çağrısı tarafından döndürülen HTML'nin DOM'a eklenmesi? –

+0

Benzer soru; http://stackoverflow.com/questions/16990573/how-to-bind-bootstrap-popover-on-dynamic-elements –

cevap

17

Öğelerin DOM'ta olduğundan $("[rel=popover]").popover({placement:'left'}); numaralı telefonu çağırmanız gerekir.

GÜNCELLEME

jQuery

$(element_selector) 
    // load results into HTML of element_selector 
    .load('your/php/file') 
    // when done, initialize popovers 
    .done(function(){ 
    $("[rel=popover]").popover({placement:'left'}); 
    }); 

VEYA tüm jQuery ajax için bir yakalama yapmanız gerekenler ajax başarısı fonksiyonunda

$.ajaxComplete(function(){ 
    $("[rel=popover]").popover({placement:'left'}); 
    }); 
+1

JQuery kullanıyor olmalı, değil mi? –

+1

Evet, ama sanırım "$ (" [rel = popover] ") diye adlandırdığı için kabul edildi.popover ({yerleştirme: 'sol'}); – nickaknudson

+0

Çalıştı! Haklıydınız, fonksiyonum oluşturulan unsurlar DOM'da olduğundan önce çağrılıyordu. Yardım için çok teşekkür ederim, bu süreçte bana da öğretti. Şimdi kusursuz çalışıyor. Eğer yapabilirsem oy verirdim! xD – ryzh

2

istekleri kullanıyorsanız popolu ara. Bu işlev seçicisi içinde düzgün çalışacak bu

success:function(){ 
    $("[rel=popover]").popover({placement:'left'}); 
} 
+0

Teşekkür ederiz! Evet, fonksiyonumun üretilen unsurların DOM'de bulunmasından önce çağrıldığını anladım. Yardım için çok teşekkür ederim, o da bana süreçte öğretti! – ryzh

+0

Bir şey değil. – Nick

0

gibi bir şey demek ki Nasılsın

$(function() 
{ 
console.info($("*[rel=popover]")); 
$("*[rel=popover]").popover(); 
}); 
İlgili konular