在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 中使用它?
使用属性
开头为 选择器:
$('[id^="myTable"]').on('change', function(){
var $id = this.id;
// do stuff
});
这将针对ID以myTable开头的所有元素,例如myTable1
,myTable2
,myTableStackOverflowChineseOldMan
等。
使用 PHP 插入元素并不能真正使它们动态化,因此不需要委托的事件处理程序。