2013-11-21 5 views
0

Я знаю, что ему дали несколько ответов, но я пойду за ним :). Как говорится в заголовке, я хочу добавить загрузочный бутстрап, но с загруженным содержимым ajax. мой html, но я хочу, чтобы сначала появилось сообщение Загрузка, а затем содержимое.Bootstrap popover и загрузка контента с помощью ajax и django

<p class='entry' data-adjaxload = '/calendar/entry/1'>Title1</p> 
<p class='entry' data-adjaxload = '/calendar/entry/2'>Title2</p> 
<p class='entry' data-adjaxload = '/calendar/entry/3'>Title3</p> 

мой взгляд Джанго следующая

def entry_details(request, entry_id): 
    entry = get_object_or_404(Entry, pk=entry_id) 

    args = dict(entry=entry, user=request.user) 

    if request.is_ajax(): 
     return render_to_response('mycal/ajax/entry_details.html', args) 
    else: 
     entry_form = EntryForm(instance=entry) 
     args.update(entry_form=entry_form) 
     return render_to_response('mycal/entry_details.html', args) 

Довольно просто. Я использую тот же вид либо загрузки содержимого HTML с помощью AJAX в пирог, или страница с подробной информацией по обычной просьбе ПОЛУЧИТЬ

подробност страница Аякса:

<div class="entry"> 
    <p>{{entry.title}}</p> 
    <p>{{entry.date}}</p> 
    <p>{{entry.customer}}</p> 
</div> 

и сценарий

$(document).ready(function(){ 
    $('p.entry').each(function(){ 
     var i = $(this);    
     $(i).bind('mouseenter', function(){ 
      i.popover({ 
       html:True, 
       title:i.html(), 
       content:'Loading' 
      }).popover('show');      
      $.ajax({ 
       url:i.data('ajaxload'), 
       dataType:'html', 
       success:function (data){ 
         i.popover({content:data}).popover('show'); 

        } 
      }); 
     }); 
     $(i).bind('mouseleave', function(){ 
      i.popover('hide'); 
     }); 
    }); 
}); 

Но пока он запускает ajx и извлекает html, он не будет загружать их на popover. Как я могу это изменить?

+0

Поскольку вы уже объявили 'i' как' $ (это) ', вам не нужно инкапсулировать в $ снова. –

+0

Спасибо. Но все еще не решает мою проблему. Но я удалил $ из кода, как вы предложили – Apostolos

+0

Попробуйте удалить '.popover ('show')', так как вызов 'popover ({options})' покажет popover тем не менее. –

ответ

3

Just fiddled Что вы ищете, при этом обновляемый контент обновляется динамически с использованием echo/json.

Просто переверните элемент p и дождитесь 3-секундной задержки.

Если, как вы говорите, то данные загружаются должным образом, то единственное изменение необходимо, так это:

var popover = i.data('popover'); 
popover.options.content = data.text;  
i.popover('show'); 
+0

Я делал это, но я вернул undefined ... i.data ('popover') дает мне undefined в коде выше. Добавлено rel = "popover" тоже, но все еще не определено. Bootstrap 3 - это то, что я использую. И, как я увидел в сгенерированном коде (консоль разработчиков), в моем элементе p не добавлено значение pop-popover – Apostolos

+0

. О, так что бутстрап 3 это! В этом случае вы инициализируете класс всплывающей подсказки [см. Здесь] (http://stackoverflow.com/questions/18410887/bootstrap-3-tooltips-or-popovers-doesnt-work)? Если это не сработает, удалите атрибут content-content и каждый раз поместите popover-содержимое с помощью опций popover content в качестве .popover ({«content»: «Новый текст идет здесь»}); ' –

+0

Я инициализирую" popover(), прежде чем связывать его с mouseenter – Apostolos

Смежные вопросы