所以我试图通过jquery输出一个动态填充的下拉列表。问题是它只适用于一次迭代。脚本 -
<script> $(function()
{
$("#projects").change(function() {
$("#tasks").load("getdata.php?choice=" + $("#projects").val());
});
}); //getdata.php queries data and echoes <option>
//#projects -> <select> id and #tasks->options id
</script>
我知道它与介绍它们有关,但我似乎无法让它工作。
这是循环的div -
foreach($days as $key=>$day) //inside <select id="projects">
{
echo '<td align="center" width="65">
<div>'.$day.'<br><input name="hours" type="text" size="2" placeholder="hours">
<select id="tasks">
<option>Select a Project First</option>
</select>
</div>
</td>';
}
答案 0 :(得分:0)
你需要使用.on()来动态生成元素。
$(document).on('change','#projects',function(){
//code here
});
答案 1 :(得分:0)
从php文件返回将改变#task
的内容$(document).ready(function(){
$('.#projects').change(function(){
var getdata = 'getdata.php?choice='+$("#projects").val();
alert(getdata);
$('#tasks').load(getdata);
});
})
答案 2 :(得分:0)
动态附加val
后需要刷新下拉列表//refresh value
$('select').selectmenu('refresh');
//refresh and force rebuild
$('select').selectmenu('refresh', true);
答案 3 :(得分:0)
所以我在朋友的帮助下想出这个。 首先,我的一个非常根本的错误 -
由于<select id="tasks">
字段被循环显示,因此将id更改为class更为可行。
之后,只需将#tasks
更改为.tasks
,jscript即可完成工作。
否则每个()也可以用来实现这样的结果 -
$(".tasks").each(function()
{
$(this).(load)("getdata.php?choice=" + $("#projects").val());
});