2012-03-14 70 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> 
相關問題