Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 你如何找到被点击的链接?_Javascript - Fatal编程技术网

Javascript 你如何找到被点击的链接?

Javascript 你如何找到被点击的链接?,javascript,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>&

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

<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();
}
甚至这个

$('a').live('click', function() {
    this.parent().parent().remove();
});
将函数绑定到动态创建的链接

但是我正在寻找一种方法,在没有jquery的情况下获得对点击链接的引用。我在函数内部使用jquery,但这不是重点

编辑 许多人建议在函数中使用
this
作为参数,我已经尝试过了,但它返回
窗口

<a href="javascript:delete_row(this);">delete</a>

function delete_row(elem) {
    console.log(elem);
}

Firebug console: Window config_maker.php

函数删除_行(elem){
控制台日志(elem);
}
Firebug控制台:Window config_maker.php

您可以使用
传递引用

<a href="javascript:delete_row(this);">

使用

<a href="javascript:delete_row(this);">

您不能只使用
这个
作为函数的参数吗

<a href="javascript:delete_row(this);">xxx</a>
使用


然后调用
javascript:delete_行(this)

与所有其他答案相反,在这种情况下,您不能传递
,因为这将引用
窗口
对象,而不是链接。为什么?因为您没有使用事件处理程序。您正在使用
javascript:
协议。不要使用它来调用函数,而是使用事件处理程序。改变你的链接到这个,你会直

<a href="javascript:void(0);" onclick="delete_row(this);">delete</a>

这离理想还有很长一段路要走,现在也是如此。但这至少可以让你的代码正常工作

<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>
}


}

只需检查处理程序函数中的
这个
对象

使用:
this.id

这可能会对您有所帮助

document.addEventListener("click", listener);
function listener(event){
     if(event.target.nodeType != 'a') return false;
     document.remove(event.target.parentNode.parentNode);
}

我确实试过了,但它仍然返回
window
try using onclick,我很确定这会指向链接。@Majid是的,
这个
在本例中指的是
window
。请参阅我的答案以获得解释和解决方案。+1是我真正希望在javascript上下文中成为公理的最后一条(不引人注目的)注释。@Mark Yeah相信我,我在键入
javascript:void(0)时畏缩了我已经很久没有这么做了!谢谢另外,我记得我在jquery的早期看到过一个教程,它弄乱了
目标
,不知何故发现了
a
,但我丢失了它,再也找不到了。@Majid是的,这也是可能的,使用
事件.target
,但即使这样,您也会遇到跨浏览器问题,因为IE将其称为
srcelem
,而不是target!如何在不引人注目的javascript中处理href字段?我总是使用
javascript:void(0)
因为
#
有一种倾向,会把你带到页面的顶部。
<a href="javascript:void(0);" onclick="delete_row(this);">delete</a>
<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();
document.addEventListener("click", listener);
function listener(event){
     if(event.target.nodeType != 'a') return false;
     document.remove(event.target.parentNode.parentNode);
}