0

所以我有一个模态。触发时获取。1 个 JSON 文件。JSON有多个节点;但是,我只想定位最后 4 个节点并省略它之前的任何内容。这些节点的名称是:post_a, post_b, post_c, post_d. 它们将始终是阵列中的最后 4 个节点。 这是我能想到的最好的逻辑:c

我正处于我的投资组合的最后一次交互中,我对如何遍历这 4 个节点感到非常困惑。我知道这将是逻辑错误,我对此表示满意。我离兔子洞还很远,现在我只想让它工作。:(

示例 JSON 文件:

{
  created_at: "2013-07-15T05:58:25Z", 
  id: 21, 
  name: "Skatelocal.ly",
  svg: "<svg> ... </svg>",
  post_a: "This is an awesome post 1", 
  post_b: "This is an awesome post 2", 
  post_c: "this is an awesome post 3", 
  post_d: "this is an awesome post 4"
}

以下是它应该如何遍历的触发器和 JSfiddle:

JSFIDDLES


postInModal = function(data, status) {

  $(".next").on({
    click: function() {
    //jsfiddles has working interaction dont want to cludder  
    $(".modal-main").hide().html(data.post_X).fadeIn()
    }
  });
  return $(".prev").on({
    click: function() {
    //jsfiddles has working interaction dont want to cludder
    $(".modal-main").hide().html(data.post_X).fadeIn()
    }
  });
};
return popProject = function(x) {
  return $.ajax({
    type: "GET",
    url: "/works/" + x + ".json",
    success: postInModal
  });
4

2 回答 2

0

像这样的东西?

var keys = [ 'post_a', 'post_b', 'post_c', 'post_d' ];
$.each(keys, function(i, key) {
  var val = yourJsonObject[key];
  // do something with val ..  
});

要一个接一个地绘制每个值:

var keys = [ 'post_a', 'post_b', 'post_c', 'post_d' ];
var index = 0;

function getNext() {
  if (index < keys.length) {
    var key = keys[index++];
    var val = yourJsonObject[key];
    return val;
  }
  return null;
}

在您的点击处理程序中尝试

var val = getNext();
if (val != null) {
  // do something with value
} else {
  // we haven gotten everything already
  // do nothing or reset index to start again or whatever
}
于 2013-07-17T08:19:06.983 回答
0

您可以尝试使用此逻辑,遍历 JSON 对象以查找post_*值的值,推入数组对象。现在此数组对象可用于在单击.next.prev按钮时进行迭代

遍历代码如下

       function js_traverse(o) {
            var type = typeof o;
            if (type == "object") {
                for (var key in o) {
                    if (key.indexOf("post_") >= 0)
                        print(o[key]);                        
                }
            } 
        }

如果您有多个在演示代码中指定的类型的对象,那么您可以使用维度数组对象左右。

你也可以在这个小提琴上查看演示

欢迎查询!

于 2013-07-17T08:20:14.093 回答