Как использовать jQuery-плагин Yarp для timeago с getjson & .html - PullRequest
0 голосов
/ 06 января 2012

Я пробовал несколько способов, но без шансов: http://timeago.yarp.com/

$(function() {
$('abbr.timeago').timeago();
    $('.more').click(function() {
    $.getJSON('http://127.0.0.1:9987/test/c.php?callback=?', function(datas){
                $.each(datas, function(i, data) {       

                    $('.fdiv2 .fdtl').html('<abbr class="timeago"></abbr');             
            });         
        });
    $('.fdiv2 .fdtl').slideToggle(1000);
});

});

Ответы [ 2 ]

1 голос
/ 06 января 2012

Вы должны повторно инициализировать timeago на недавно вставленном элементе. Также кэшируйте то, что кэшируется (не нужно вызывать $('.fdiv2 .fdtl') несколько раз):

$(function() {
    var el = $('.fdiv2 .fdtl'); // cache the element
    $('abbr.timeago').timeago();
    $('.more').click(function() {
        $.getJSON('http://127.0.0.1:9987/test/c.php?callback=?', function(datas){
            $.each(datas, function(i, data) {
                el.html('<abbr class="timeago"></abbr>');
                el.find('abbr.timeago').timeago();
            });
        });
        el.slideToggle(1000);
    });
});

Также убедитесь, что вам действительно нужно выполнить итерацию по datas - если он всегда содержит один элемент в массиве, вы можете заменить вызов $.each() на var data = datas[0];. Если в нем больше элементов и вы хотите использовать только последний (похоже, что это именно тот случай, но вы не показываете весь код), вы можете заменить его на var data = datas[datas.length-1]; (который назначит последний элемент в data переменная).

0 голосов
/ 06 января 2012

Попробуйте вставить эту строку кода:

...
$('.fdiv2 .fdtl').html('<abbr class="timeago"></abbr');
$('abbr.timeago').timeago();
...
...