Мне интересно, есть ли более элегантное средство для изменения параметра события onclick.У меня есть таблица, из которой я динамически добавляю / удаляю элементы, и я переиндексирую строки.Каждая строка имеет ссылку delete
, которая имеет индекс строки (и ссылку duplicate
), которая должна обновить свой параметр, чтобы соответствовать измененному идентификатору строки.
В настоящее время мой код выглядит (упрощенно)
<a onclick="delRow(1)">delete</a>
и javascript: ...
html = element.innerHTML;
html = html.replace(/dupRow(\\d+)/g, "dupRow(" + newIndex + ")");
html = html.replace(/delRow(\\d+)/g, "delRow(" + newIndex + ")");
element.innerHTML = html
, и я хотел бы, чтобы он стал чем-то похожимиз
if (element.onclick != null) {
element.onclick.params[0] = newIndex;
}
Есть ли такой способ сделать это?У меня также есть JQuery, если это помогает.Спасибо!
Обновления:
Так что благодаря великолепной помощи @ rich.okelly я решил свою проблему
<script>
...
var newRow = '\
<tr>\
<td class="index" col="0">0</td>\
<td>this is content...</td>\
<td><a href="#" row-delete="true">Del</a></td>\
</tr>';
// re-index table indices in a non-efficient manner
function reIndexTable() {
$("#rpc-builder-table").find('.index').each(function (i) {
$(this).html(i)
})
}
// add row
function addRow() {
for (i = 0; i < $('#addRowCount').attr("value"); i++) {
$("#rpc-builder-table").append(newRow);
}
reIndexTable();
}
$(document).ready(function () {
// add row button
$('#addRowsButton').on('click', function () {
addRow();
});
// delete row
$('#rpc-builder-table').on('click', 'td a[row-delete="true"]', function () {
$(this).closest('tr').remove();
reIndexTable();
});
...
}
</script>
...
<div>
<label>Rows to add: </label>
<input id="addRowCount" value="1" size="2" />
<button id="addRowsButton">Add Row(s)</button>
</div>
<div><table id="rpc-builder-table"><tbody>
<tr>
<th>Idx </th>
<th>Some content (1)</td>
</tr>
</tbody></table></div>
...
Я использовалФункция .on()
вместо предложенной функции .delegate()
, поскольку она устарела.Решение работает хорошо - надеюсь, оно кому-нибудь поможет :) 1025 *