2013-02-13 20 views
8

मैं कुछ जानकारी दिखाने के लिए एक पॉपओवर का उपयोग कर रहा हूं जिसे मैं AJAX अनुरोध के बाद अद्यतन कर रहा हूं। असल में, मैं उस तत्व की डेटा-सामग्री विशेषता अद्यतन कर रहा हूं जो होवर पर पॉपओवर को ट्रिगर करता है। मैं डोम की जांच कर रहा हूं और डेटा-सामग्री सामग्री निश्चित रूप से अपडेट हो रही है, लेकिन पॉपओवर की सामग्री वही रह रही है। मैं जो कुछ भी सोच सकता हूं उसकी कोशिश कर रहा हूं और मुझे लगता है कि मुझे कुछ आसान याद आ रही है। क्या कोई मेरी मदद कर सकता है। उसकी कुछ कोड:ट्विटर बूटस्ट्रैप जेएस पॉपओवर सामग्री अद्यतन नहीं होती है जब डेटा-सामग्री विशेषता अद्यतन होती है

<ul> 
    <li class="player_name_li" rel="popover" data-placement="right" 
    data-html="true" data-title="Dude" data-trigger="hover" 
    data-content="<div class='custom_content'>Heres some content</div>" 
    data-original-title="" title=""><span class="player_name">Dude</span> 
    </li> 
</ul> 

और फिर मेरी स्क्रिप्ट

$(document).ready(function(){ 
$('.player_name_li').popover({ 
    template: '<div class="popover" style="width:250px;"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'}); 

setInterval(function(){update_scores();}, 6000); 

function update_scores() 
{ 
    $.ajax({ 
     url: HOST_NAME, 
     type: 'POST', 
     //async: false, 
     data: {player_array: my_data_is_generated_from_page)} 
    }).done(function(results){ 
     var obj = $.parseJSON(results);  
     //this reloads the stupid popover data 
     $.each(obj.fancy_return, function(index, value){ 
     $('.player_info_link').each(function(){    
      var huh = $(this).closest('li'); 
      huh.attr('data-content', value.new_table); 
       }); 
     )}; 
} 

अब जैसे मैंने कहा thats सब काम कर रहा है जैसे मैं उम्मीद, और प्रत्येक पॉपओवर ली के डेटा-सामग्री जो मैं डोम निरीक्षण द्वारा सत्यापित अद्यतन करने के लिए, लेकिन जब मैं ली पर होवर करता हूं तो यह अभी भी डेटा-सामग्री की पुरानी सामग्री दिखा रहा है। मैंने कुछ पोस्ट देखे हैं और content: function(){return $(this).data('content');} के साथ पॉपओवर के अपने इंस्टीट्यूशन में फ़ंक्शन द्वारा सामग्री को सेट करने का प्रयास किया है, लेकिन यह काम नहीं करता है। मैंने काम करने वाले प्रत्येक तत्व को नष्ट करने और पुनर्निर्माण करने का भी प्रयास किया है, लेकिन जब से यह एक अंतराल समारोह में और स्वचालित रूप से निकाल दिया जाता है, तो यह एक खुला पॉपओवर बंद कर देता है यदि आपके पास एक खुला है जो इसे छोटी लगती है। कोई विचार?

+0

बस पूछना क्योंकि मुझे यह आपके कोड में नहीं दिख रहा है - क्या आप सामग्री को अपडेट करने के बाद प्रत्येक पॉपओवर को फिर से शुरू कर रहे हैं? – adamdehaven

+0

@AdamD ya मैं उन्हें पुन: प्रारंभ कर रहा था और यह काम नहीं कर रहा था इसलिए मैंने उन्हें नष्ट करने और पुनर्निर्माण करने की कोशिश की। – Rooster

उत्तर

8

आप सही हैं कि ऐसा करने का उचित तरीका content: function(){return someDynamicContent} देना है जैसा आपने बताया है। एकमात्र समस्या जो मैं देखता हूं कि आपने भाग लिया हो सकता है कि आप शायद अनजान हैं कि $('.player_name_li').data('content') स्वचालित रूप से $('.player_name_li').attr('data-content') के कुशलता के साथ सिंक में नहीं रहता है। आपको यह सुनिश्चित करने की ज़रूरत है कि आप अपने AJAX कॉलबैक में जो भी बदलते हैं वह वही है जिसे आप content की परिभाषा में संदर्भित करते हैं।

आप फिर

$('.player_name_li') 
    .popover({ 
    template: '<div class="popover" style="width:250px;"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>', 
    content: function(){return $(this).data('content')} 
    }) 

परिभाषित यदि आप

huh.data('content', value.new_table); 

उपयोग करने के लिए आप इसे इस तरह करते हैं, प्लगइन पर्दे के पीछे सब reinitializing करना होगा की जरूरत है।

+0

देरी के लिए खेद है लेकिन मुझे अन्य परियोजनाओं पर पकड़ा गया है। जब मुझे मौका मिलता है तो मैं इस समाधान का परीक्षण करूंगा। ऐसा लगता है कि मैं ऐसा नहीं कर रहा हूं जो आपने कहा था समाधान हो सकता है, इसलिए यह एक शॉट के लायक है। – Rooster

+0

हां। वह चाल है। असल में मैंने पृष्ठ लोड पर प्रारंभिकता को हटा दिया और अंतराल में फ़ंक्शन को उसी तरह ओवरराइट करने के लिए अनुमति दी। लेकिन यह वही समाधान अवधारणात्मक रूप से है। धन्यवाद! – Rooster

संबंधित मुद्दे