2012-03-14 40 views
9

我有这个HREF链接:如何在href javascript函数上传递“this”引用?

href="javascript:foo(this);" 

,当我把它称为“这个”点到窗口对象,而不是链接。我如何传递参考链接?

http://jsfiddle.net/xMGKz/

编辑注:现在的问题是如何与HREF传球,不是一般的 - 我知道的onclick!

而不是复制id和getElementById,这不是“this”,它是DOM搜索某个元素,不需要在HTML中内联。

The anwer is:not possible。

回答

18

当您在href中使用“javascript:....”时,您正在调用此函数globaly。不在链接的上下文中。 你可以尝试使用:

<a href="#" onclick="foo(this); return false;">MyLink</a> 

http://jsfiddle.net/xMGKz/1/

+1

在这个调用中,'this'不管是否指向'a'元素。尽管不建议使用这种事件绑定方法,但最好将它绑定到锚对象表示,而不是DOM元素。 – 2012-03-14 12:35:48

+0

@Eliran Malka:这就是lxx要求......通过引用传递A元素。 – MatuDuke 2012-03-14 12:36:54

+0

我知道它适用于onclick,只是想知道为什么它不适用于href。如果它是全局调用的,那么就没有办法用href来引用它。 – Ixx 2012-03-14 12:36:55

1

首先,一个ID字段添加到你的锚。

则...

使用标准的JavaScript:

<a id="someLink" href="javascript:foo(document.getElementById('someLink'));"> 

使用jQuery

<a id="someLink" href="javascript:foo($('#someLink'));"> 
+0

但是这使得我在文本中为每个链接插入2次id,这是我想要避免的。 – Ixx 2012-03-14 12:39:19

4

主观上,你会更适合的东西,如:

<a href="javascript:void(0)" id="myAnchor">My Link</a> 

,然后代码:

document.getElementById('myAnchor').onclick = function() { 
    // this is the <a> in here 
    return false; // optional, prevents href from executing at all 
}; 

这样,一切都更清晰一点。希望这有助于-ck

3

更好;

<a href="javascript:void(0)" onclick="alert(this.href);">Link</a> 
相关问题