もっと面白い方法でonclickイベントのパラメータを変更する方法があるのでしょうか。私は、動的に要素を追加/削除している表を再索引付けしています。各行には、行のインデックス(およびduplicate
リンク)を持つdelete
リンクがあり、変更された行IDと一致するようにパラメータを更新する必要があります。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私はそれが推奨されませんので、私が代わりに提案.delegate()
機能の.on()
機能を使用し、私の問題
<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>
...
を解決したので。ソリューションは、うまく機能 - それは、イベントハンドラ
ハンドラ内$("#tableID").delegate("a", "click", delRow);
$("#tableID").on("click", "a", delRow); //jQuery 1.7
を添付するために誰か:)インラインハンドラの代わりに
これは間違った方法で行っています。関数内でクリックされたオブジェクトへの参照を使用することを検討してください。最後に、削除リンクへの参照で、削除する必要のある行を見つけることができます。これでパラメータは必要ありません。 –