如何获取对点击链接的引用以删除正确的行?
<tr>
<td>c1r1</td>
<td>c2r1</td>
<td><a href="javascript:delete_row();">delete</a></td>
</tr>
<tr>
<td>c1r2</td>
<td>c2r2</td>
<td><a href="javascript:delete_row();">delete</a></td>
</tr>
function delete_row() {
this.parent().parent().remove();
}
我知道我可以使用(在jquery中)
$('a').click(function() {
this.parent().parent().remove();
}
甚至是这个
$('a').live('click', function() {
this.parent().parent().remove();
});
将函数绑定到动态创建的链接。
但是我正在寻找在没有jquery的情况下获得对点击链接的引用的方法。我正在使用jquery 函数,但这不是重点。
修改
许多人建议在函数中使用this
作为参数,我已尝试过,但它会返回window
:
<a href="javascript:delete_row(this);">delete</a>
function delete_row(elem) {
console.log(elem);
}
Firebug console: Window config_maker.php
答案 0 :(得分:11)
与所有其他答案相反,在这种情况下,您无法传递this
,因为那将指的是window
对象,而不是链接。为什么?因为您没有使用事件处理程序。您正在使用javascript:
协议。不要使用它来调用您的函数,而是使用事件处理程序。改变你的链接,你就会直截了当......
<a href="javascript:void(0);" onclick="delete_row(this);">delete</a>
这仍然远非理想,因为unobtrusive Javascript是现在的发展方式。但这至少会使你的代码正常工作。
答案 1 :(得分:1)
您可以使用this
传递参考。
<a href="javascript:delete_row(this);">
答案 2 :(得分:0)
<tr id='row1'><td><a rel="row1" href="javascript:delete_row('row1');">delete</a></td></tr>
<tr id='row2'><td><a rel="row2" href="javascript:delete_row(this.rel);">delete</a></td></tr>
...
function delete_row(varID) {
document.getElementById(varID).remove();
}
或
function delete_row(varID) {
$('#'+varID).remove();
}
答案 3 :(得分:0)
这可能有助于你
document.addEventListener("click", listener);
function listener(event){
if(event.target.nodeType != 'a') return false;
document.remove(event.target.parentNode.parentNode);
}
答案 4 :(得分:-1)
使用this
<a href="javascript:delete_row(this);">
答案 5 :(得分:-1)
你不能只使用this
作为函数的参数吗?
<a href="javascript:delete_row(this);">xxx</a>
在Javascript中:
function delete_row(clickedLink) {
...
}
答案 6 :(得分:-1)
使用...
function delete_row(link) {
link.parent().parent().remove();
}
然后拨打javascript:delete_row(this);
答案 7 :(得分:-1)
只需检查处理函数
中的this
对象
使用:this.id