我想知道是否有更優雅的方法來修改onclick事件的參數。我有一個表,我動態地添加/刪除元素,我重新索引行。每行都有一個delete
鏈接,該鏈接具有需要更新參數以匹配修改的行ID的行索引(和duplicate
鏈接)。Javascript修改元素的事件函數的參數
目前我的代碼看起來像(簡體)
<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()
功能,因爲它已被棄用。解決方法效果很好 - 希望它可以幫助別人:)
你以錯誤的方式去做這件事。考慮在你的函數中使用對象點擊'this'的引用。最後,對刪除鏈接的引用應該允許您查找需要刪除的行。現在你不需要參數。 – 2011-12-20 16:56:48