2014-03-27 92 views
0

我仍然在學習JQuery,而今天我遇到了一個我不明白的問題。我有一些在JQuery中作爲函數的一部分創建的選擇下拉列表,然後我想要對下拉列表進行更改,並在完成後再次運行該函數(這也將再次創建下拉列表) 。在重新創建這些下拉菜單之後,這個更改不會再次觸發(換句話說,它只能工作一次)。當元素動態變化時第二次沒有觸發

如果我把< select>標籤放在HTML中,只是在JQuery中執行它的選項,但很明顯我做錯了什麼,想知道它是什麼。

這裏有一些簡單的東西,我想表明我的意思。控制檯將在第一次登錄,但之後沒有任何記錄。

TIA

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script> 
<script language="javascript"> 
$(document).ready(function(){ 
    function toggle_test() {   
     // do other things 
     var dt = '<select name="popdrop" id="popdrop" class="inspopulate"><option value="">Select</option><option value="1">1</option><option value="1">1</option></select>'; 
     $('#tt').html(dt); 
    } 
    toggle_test(); 
    $(".inspopulate").change(function() { 
     // do stuff and run toggle_test at the end 
     console.log($(this).attr('id')+' changed!'); 
     toggle_test(); 
    }); 
}); 
</script> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<form> 
<div id="tt"></div> 
</form> 
</body> 
</html> 

回答

2

的事件處理程序被綁定到的元素。當你替換元素時,你失去了處理程序。您可以在每次創建元素時綁定處理程序,但代表團可能在此處更容易:

$(document).on('change', ".inspopulate", function() { 
+0

謝謝傑森,我想我知道您的意思! – Analog

相關問題