Можно ли добавить функцию .live () к вызову getJson? - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть этот код:

Проблема в том, что я не могу добавить «активный» класс к изображениям getJson внутри mac div.Поможет ли здесь интеграция живой функции?

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?id=59597329@N08&lang=en-us&format=json&jsoncallback=?", function(data){
    $.each(data.items, function(i,item){
        $("<img src='" + item.media.m + "'></img>").appendTo("#mac");
    });
});

$("#mac img:first").addClass('active');

function slideSwitch() {
var $active = $('#mac img.active');

if ( $active.length == 0 ) $active = $('#mac img:last');

var $next =  $active.next().length ? $active.next()
    : $('#mac img.active');

$active.addClass('last-active');

$next.css({opacity: 0.0})
    .addClass('active')
    .animate({opacity: 1.0}, 1000, function() {
        $active.removeClass('active last-active');
    });
}

$(function() {
    setInterval( slideSwitch, 5000 );
});

1 Ответ

1 голос
/ 21 февраля 2011

Вы не сказали, что на самом деле хотите сделать.Одним из решений было бы поместить весь код, который должен работать в DOM, в обработчик ready и запустить интервал после загрузки данных:

function slideSwitch() {
    var $active = $('#mac img.active');
    if ( $active.length == 0 ) $active = $('#mac img:last');
    var $next =  $active.next().length ? $active.next() : $('#mac img.active');
    $active.addClass('last-active');

    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 1000, function() {
            $active.removeClass('active last-active');
        });
}

$(function() {
    $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?id=59597329@N08&lang=en-us&format=json&jsoncallback=?", function(data){
        $.each(data.items, function(i,item){
            $("<img src='" + item.media.m + "'></img>").appendTo("#mac");
        });
        $("#mac img:first").addClass('active');
        setInterval( slideSwitch, 5000 );
    }); 
});
...