2014-10-21 2 views
0

У меня проблема с загрузчиком Popover. Это работает когда-то, но в других случаях это не так. Я использую его для создания popover с информацией о пользователях, когда посетитель наводится на имя пользователя. Страница генерируется ajax, поэтому сначала я подумал, что это просто проблема загрузки контента после, но проблема в том, что она работает иногда.Bootstrap Popover не работает последовательно

$(document).on('mouseenter', '.postusername', function(e){ 
    var userid = this.parentElement.parentElement.children[0].innerHTML; 
    var te = this; 
    if(userid) 
    { 
     $.get('/Requests/getuinfo.php', {id : userid}) 
     .done(function(data){ 
      var uinfo = JSON.parse(data); 
      boo = uinfo; 
      $(te).popover({ 
       html : true, 
       template : '<div class="popover" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>', 
       content : '<div class="popover-holder" style="background-image:url(\'/Style/Media/CoverPics/' + uinfo.coverpic + '\');">' + uinfo.name 
       + '</div>', 
       placement: 'auto' 
      }); 
      $(te).popover('show'); 
     }); 
    } 
}); 

$(document).on('mouseleave', '.postusername', function(e){ 
    $(this).popover('hide'); 
}); 

Это Javascript, который я использовал.

+0

Вы пытались удалить popover после того, как скрыли его, или он делает это автоматически? – Archer

+0

ЭТО РАБОТАЕТ! THANKS SO MUCH @Archer – TheSabby

+0

Не стоит беспокоиться :) – Archer

ответ

1

Как вы нашли, проблема заключалась в том, что вы пытались создать новый popover для чего-то, когда это уже было сделано. Убрав popover после скрытия, он исправил эту проблему.

Однако, это должно решить проблему, не удаляя его, и будет означать, что вы также получите только информацию пользователя после каждого пользователя ...

var userids = []; 

$(document).on('mouseenter', '.postusername', function(e){ 
    var userid = this.parentElement.parentElement.children[0].innerHTML; 
    var te = this; 
    if(userid) 
    { 
     if (userids.indexOf(userid) === -1) { 
      $.get('/Requests/getuinfo.php', {id : userid}) 
      .done(function(data){ 
       var uinfo = JSON.parse(data); 
       boo = uinfo; 
       $(te).popover({ 
        html : true, 
        template : '<div class="popover" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>', 
        content : '<div class="popover-holder" style="background-image:url(\'/Style/Media/CoverPics/' + uinfo.coverpic + '\');">' + uinfo.name 
        + '</div>', 
        placement: 'auto' 
       }); 
       $(te).popover('show'); 
       userids.push(userid); 
      }); 
     } 
     else { 
      $(te).popover('show'); 
     } 
    } 
}); 

$(document).on('mouseleave', '.postusername', function(e){ 
    $(this).popover('hide'); 
}); 

Он хранит массив идентификаторов пользователей, которые вы получил информацию, и только получает информацию, если вы еще этого не сделали.

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