如何找到点击的链接?

时间:2010-10-12 13:59:02

标签: javascript

如何获取对点击链接的引用以删除正确的行?

<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

8 个答案:

答案 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