0

所以我试图通过 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>';
}
4

4 回答 4

0

您需要对将动态出现的元素使用 .on() 。

 $(document).on('change','#projects',function(){
   //code here
 });
于 2013-05-31T07:51:45.553 回答
0

从 php 文件返回会改变 #task 的内容

$(document).ready(function(){
    $('.#projects').change(function(){
        var getdata = 'getdata.php?choice='+$("#projects").val();
        alert(getdata);
        $('#tasks').load(getdata);
    });
})
于 2013-05-31T08:04:45.447 回答
0

您需要在动态追加 val 后刷新下拉列表


//refresh value         
$('select').selectmenu('refresh');

//refresh and force rebuild
$('select').selectmenu('refresh', true);
于 2013-05-31T08:08:16.897 回答
0

所以我在朋友的帮助下想出了这个。首先,我的一个非常根本的错误——

由于<select id="tasks">字段正在循环显示,因此将 id 更改为 class 更可行。

之后,它只是改变#tasksto.tasks并且 jscript 完成工作。

否则 each() 也可以用来实现这样的结果 -

$(".tasks").each(function() 
{
      $(this).(load)("getdata.php?choice=" + $("#projects").val());
});
于 2013-05-31T19:55:52.897 回答