JQuery, проблема с массивом - PullRequest
       7

JQuery, проблема с массивом

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

Кажется, что следующий код ничего не печатает, хотя, как вы можете видеть, он должен. По сути, Firebug не сообщает об ошибках.

            var assign = {
                'href' : {
                    '.voteUp' : '?p=action&a=voteup&pid='+ value.PostPID,
                    '.voteDown' : '?p=action&a=votedown&pid='+ value.PostPID,
                    '.postImage a': '?p=user&uid='+ value.UserUID
                },

                'src' : {
                    '.postImage img' : value.UserImage
                },

                'html' : {
                    '.repCount' : value.PostRep,
                    '.postInfo .rep': value.UserRep,
                    '.postInfo .name': value.UserName,
                    '.postInfo .time': value.PostTime,
                    '.postMessage' : value.PostText
                }
            };

            $.each(assign, function(type, data) {
                switch (type)
                {
                    case 'html':
                        $.each(data, function(handler, value) {
                            $('#'+ value.PostPID +' '+ handler).html(value);
                        });
                    break;

                    case 'href':
                    case 'src':
                        $.each(data, function(handler, value) {
                            $('#'+ value.PostPID +' '+ handler).attr(type, value);
                        });
                    break;
                }
            });

Это часть другого кода, но остальная часть сценария работает хорошо (например, после этого кода есть функция, fadeIn содержимое). Если вы не можете найти ничего плохого здесь, пожалуйста, прокомментируйте выше, и я добавлю весь сценарий. Спасибо.

1 Ответ

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

Ни один из объектов не обладает свойством PostPID.

Поскольку value представляет объект, на который ссылаются b html, src и т. Д., Вам необходимо использовать свойство в этих объектах, чтобы получить правильное значение.

Например:

case 'html':
    $.each(data, function(handler, value) {
        $('#'+ value['.repCount']+' '+ handler).html(value);
    });
break;

Или, возможно, вам нужен другой value идентификатор (источник которого не включен в вопрос).

В этом случае переименуйте параметр для обработчика $.each() во что-то другое.

case 'html':
       // renamed value paramter---v---to make the previous "value" accessible
    $.each(data, function(handler, v) {
        $('#'+ value.PostPID+' '+ handler).html(v['.repCount']);
  // original----^        "each" parameter------^
    });
break;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...