jQuery在for循环中重复返回相同的元素

时间:2011-08-03 11:54:32

标签: javascript jquery object

我遇到下面描述的加载功能问题。出于某种原因,即使我每次都传递一个不同的参数(我用console.log(显示)检查过它),它似乎返回相同的jQuery对象。

我不确定我能提供的是否还有其他信息,但请告诉我,我会看到我能做些什么。

// ...

function image(path, fn) {
    $(new Image()).load(function() {
        if (typeof fn === 'function') {
            fn($(this));
        }
    })
    .error(function () {
        console.error('Unable to load image: ' + imgBasePath + path);
    })
    .attr('src', imgBasePath + path);
}

function load(p, info, fn) {
    display = info || {
        Username : p.username,
        Lives : p.location,
        Supports : p.team,
        Level : p.level
    };

    image(p.avatar, function(img) {
        var detail = $('<div></div>', {
            class: 'player_details'
        });

        for (name in display) {
            detail.append($('<div>').html(name + ': ' + display[name]));
        }
        if (typeof fn === 'function') {
            fn(img, detail);
        }
    });
}

// ...

$.each(players, function(i, p) {
    var id, elem;
    id = (player.sessionid === p.sessionid) ? 'me' : null;
    elem = $('<div />', {
        class: 'player clearfix',
        target: p.sessionid,
        id: id
    });
    load(p, {Username: p.username, Level: p.level}, function(img, details) {
        img.appendTo(elem);
        details.appendTo(elem);
    });
    elements.progress.append(elem);
});

// ...

1 个答案:

答案 0 :(得分:0)

我找到了答案。 display = info || {...位于全球范围内,因为我没有将其添加到var前面,将其更改为var display = info || {...解决问题。

http://jsfiddle.net/tqKhA/8