Jquery仅适用于第一次迭代

时间:2013-05-31 07:50:24

标签: php javascript jquery web-applications

所以我试图通过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 个答案:

答案 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());
});