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