如何将jquery更改事件绑定到动态表/行?

时间:2013-09-20 16:32:31

标签: php jquery

在PHP中,我有一个动态数量的表,每个表都有一个动态行数。表中的最后一列($ reasonstr)是一个下拉列表。我想捕捉下拉的变化。如果我这样做:

                    $('#reason2td3').change(
                     function(){
                        }

我能够捕捉到我需要的东西。但是,我希望这是动态的,基于页面上的表和行的数量。

我已经确定了表格和表格。行如下:

表,其中$ id随页面上的每个表格而增加:

echo sprintf('<table cellspacing="0" class="myTable" id="myTable%s">',$id);

所以,如果页面上有两个表,它们是#myTable1和#myTable2。

行,其中$ tdid随表中的每一行而增加:

                     echo '<tbody>';
                   foreach ($record as $r) {
                        echo sprintf('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>$ %s</td><td>%s</td><td id="reason%std%s">%s</td></tr>',
                             $r['org_number'],
                             $r['dept_descr'],
                             $r['supplier_number'],
                             $r['supplier_name'],
                             $r['invoice_number'],
                             $r['receive_date'],
                             $r['final_qty'],
                             number_format($r['final_cost'],2),
                             $r['inv_status'],
                                $id,
                                $tdid,
                                $reasonstr);
                             $tdid++;
                   }
                  echo '</tbody></table>';
                  $tdid=0;

所以,表2中的第3行是#reason2td3。

如何从PHP捕获$ id和$ tdid并在JQuery中使用它?

1 个答案:

答案 0 :(得分:0)

使用attribute starts with selector

$('[id^="myTable"]').on('change', function(){
   var $id   = this.id;
   // do stuff
});

这将定位ID为myTable的所有元素,例如myTable1myTable2myTableStackOverflowChineseOldMan等。

使用PHP插入元素并不能使它们动态化,因此不需要委托事件处理程序。