5

我希望在我的网站上放置一个 div,其中内容会根据链接的内容发生变化clicked而无需刷新。放在那里的内容来自 aMySQL database并且它被放在 JSON 中。我的问题是单击链接时无法显示 JSON 数据。

这是我正在使用的脚本:

$(document).ready(function () {
   $.getJSON("jsondata.php",rightSideData);
   function rightSideData(data) {
      for(var i=0; i<data.length;i++) {
         $("#changetext"+data[i].id).click(function() {
            $("#rightside").html("<h1>" + data[i].title + "</h1><p />" + data[i].content);
         });
      }
   }
});

这是div必须改变的元素:

<div class='rightside' id='rightside'>Test</div>

链接是这样构造的:

echo "<a id='changetext" . $row['id'] . "'> ";
echo "<div class='tile'>";
echo "<h2>Tile</h2></div></a>";

我已经测试了不同的元素并且它们工作正常(使用硬编码数据更改 div 内容,显示 JSON 数据),但我很难弄清楚为什么组合的东西不起作用。

4

2 回答 2

3

Objects 没有长度,可以$.each用来迭代它,除非它实际上是一个包含 objects 的数组:

$(document).ready(function () {
   $.getJSON("jsondata.php",rightSideData);

   function rightSideData(data) {
      $.each(data, function(i, d) {
         $("#changetext" + d.id).on('click', function() {
             var h1 = $('<h1 />', {text : d.title}),
                 p  = $('<p />', {text : d.content});
             $("#rightside").html(h1.add(p));
         });
      });
   }
});
于 2013-05-15T12:35:09.583 回答
2

问题是ivar 将data.length在循环的末尾,这就是点击处理程序将看到的。

于 2013-05-15T12:31:48.470 回答