2013-05-15 56 views
5

Tôi đang tìm cách đặt div trên trang web của mình nơi nội dung thay đổi dựa trên liên kết là clicked mà không cần làm mới. Các nội dung để đặt ở đó xuất phát từ một MySQL database và nó được đặt trong JSON. Vấn đề của tôi là tôi không thể lấy dữ liệu JSON để hiển thị khi nhấp vào liên kết.Tạo nội dung div động với jquery

Dưới đây là kịch bản tôi đang sử dụng:

$(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); 
     }); 
     } 
    } 
}); 

Đây là yếu tố div mà đã thay đổi:

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

Các liên kết được xây dựng theo cách này:

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

Tôi đã thử nghiệm các yếu tố khác nhau và chúng hoạt động tốt (thay đổi các div tiếp theo ent với dữ liệu hardcoded, hiển thị dữ liệu JSON), nhưng tôi đang gặp khó khăn trong việc tìm ra lý do tại sao kết hợp không hoạt động.

Trả lời

3

Đối tượng does'nt có một chiều dài, sử dụng $.each để lặp nó thay vào đó, trừ khi nó thực sự là một mảng chứa các đối tượng:

$(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)); 
     }); 
     }); 
    } 
}); 
+0

Trong khi mã được cập nhật là rõ ràng hơn, nhưng nó chỉ hiển thị tiêu đề. Với tôi quá mới mẻ đến mức tôi dường như không thể tìm ra sai lầm ... –

+0

@Freezzo - Đó là điều xấu của tôi, với hầu hết các phương thức jQuery, bạn có thể thêm nhiều phần tử, như '.append (elem1, elem2, elem3)', nhưng 'html()' chỉ chấp nhận một phần tử có vẻ như vậy, vì vậy chúng ta phải thêm hai phần tử lại với nhau để tạo một phần tử, đã chỉnh sửa câu trả lời. – adeneo

2

Vấn đề là i var sẽ là data.length ở cuối vòng lặp và đó là điều mà trình xử lý nhấp chuột sẽ thấy.

Các vấn đề liên quan