5

clickedリフレッシュせずにリンクに基づいてコンテンツが変化する div を自分の Web サイトに配置しようとしています。そこに入れるコンテンツは a からMySQL 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

オブジェクトには長さがありません。$.each実際にオブジェクトを含む配列でない限り、代わりに反復処理に使用します:

$(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 に答える