2013-02-18 90 views
0

我想構建一個網頁,將構建JSON文件的元素,並附加點擊功能,這些元素。jQuery的功能不附加到DOM元素

$(document).ready(function(){ 

$.ajax({ 
     url: 'database.php', 
     type: "POST", 
     dataType: 'json', 
     success: function (datas) { 
      (datas); 
      for (var x = 0; x < datas.data.length; x++) { 
       var id = datas.data[x].ID; 
       var ip = datas.data[x].IP; 
       var ips='<div class="ip"><span id="ids">'+id+'</span><span id="number">'+ip+'</span></div>'; 
       $('#left').append(ips); 

      } 
     } 
    }); 

$('.ip').click(function() { 
alert($(this).children('#ids').text()); 
}); 

}); 

上面的代碼成功地構建了元素,但點擊函數不起作用。

+0

您分配給跨度的ID不是唯一的。雖然這可能不是你的問題的原因,但這絕對是一個壞主意。每個帶有ID的元素都應該具有該頁面唯一的ID。 – Pete 2013-02-18 16:49:56

回答

3

您可以使用on函數來替代它,它用於將事件處理程序應用於尚未創建的元素。

你有你當前click設置,嘗試這樣的事情,而不是:

$(document).on('click', '.ip', function(){ 
    alert($(this).children('#ids').text()); 
}); 

由於@Pete曾建議,它不是一個循環內分配相同id屬性是一個好主意,他們應該是唯一的文件。請考慮通過class的名稱找到它們,以便您可以提醒類似於:

alert($(this).children('.MyIdsSpan').text()); 
+0

感謝alot.it works.you救了我很多時間。 – 2013-02-18 16:52:29

+0

我還有其他問題,在什麼情況下我們可以使用live()函數? – 2013-02-18 16:55:51

+1

Live不贊成使用'$(document).on()' – Dennis 2013-02-18 17:02:49