2010-07-29 66 views
0

我有一個小小的困境,應該很容易解決。jQuery加載JSON

我正在使用jQuery/JSON/PHP加載一些數據 - 實際上,加載的數據有幾個<li>元素。

下面的代碼工作正常:

function load_list() { 
$.getJSON('json/load.php', function(data) { 
      $.each(data, function(k, v){         
      $("#my_div").append(' 
             <li> \ 
              <div> \ 
              <input type="checkbox"> \ 
              </div> \ 
              <div>'+v.due_date+'</div> \ 
              <h3> \ 
              <span>'+v.title+'</span> \ 
              </h3> \ 
              </li> \ 
                '); 
             }); 
}); 
} 

但是,讓我們說我想更新"#my_div",後來再次調用該函數,也就是說,每20秒。如果我重新調用上面的函數,它實際上會重新添加項目,從而重複結果。

我的問題是(原諒我不知道):我怎麼可以重寫上面的函數加載的所有事件,並刷新並設置"#my_div"的HTML是全新的,而不是不重複?

非常感謝。

回答

3

呼叫$("#my_div").empty()在包含.each()調用匿名函數的開始。

+1

+1 - 所有其他答案都忘記了這是在一個循環:) – 2010-07-29 16:48:34

+0

嗨伊格納西奧,感謝您的答覆。這當然有訣竅。我可以在7分鐘內接受這個「正確的」答案(根據SO)。 – Dodinas 2010-07-29 16:52:20

0

可以調用html function設置元素的HTML內容,就像這樣:

 $("#my_div").html(' 
            <li> \ 
             <div> \ 
             <input type="checkbox"> \ 
             </div> \ 
             <div>'+v.due_date+'</div> \ 
             <h3> \ 
             <span>'+v.title+'</span> \ 
             </h3> \ 
             </li> \ 
               '); 
0

使用html('<li>...')標記 - 它會替換內容而不是附加它。

0

Dodinas,你想使用下列內容:

$("#my_div").html('<li>...</li>'); 

使用HTML()方法插入HTML。