我有一张简单的表格:
<table id='table_actions'">
<tbody class='actions_body'>
<tr>
<td colspan=2 class="taskname"><strong>1. </strong><span name='taskname'>name</span></td>
</tr>
<tr>
<td>Действие: </td>
<td>
<select name='action_action'>
<option value="1">Consult</option>
<option value="2">Activate</option>
<option value="3">Connect</option>
</select>
</td>
</tr>
<tr>
<td><button id='addaction' class="btn">Добавить действие</button></td>
<td></td>
</tr>
</tbody>
</table>
和JQuery代码:
$('#addaction').click(function() {
$('.actions_body tr:not(:last)').clone()
.insertBefore($('#table_actions tr:last'));
});
$('select[name=action_action]').change(function() {
alert();
});
我的问题:通过更改表格的克隆部分中的选择,没有提醒。
答案 0 :(得分:4)
使用withDataAndEvents
布尔参数:
$('.actions_body tr:not(:last)').clone(true)
.clone([withDataAndEvents])
withDataAndEventsA布尔值,指示是否应将事件处理程序与元素一起复制。
答案 1 :(得分:1)
问题是因为更改事件绑定在页面加载上,并且克隆元素显然在那时不存在。您需要将事件处理程序委托给父级。试试这个:
$('#table_action').delegate('select[name=action_action]', 'change', function() {
alert();
});
或者你可以将一个布尔参数传递给clone()
来克隆带有附加事件的元素。