2012-03-14 9 views
9

私はこのHREFとのリンクがあります:私は、ウィンドウオブジェクトへの「本」の点ではなく、リンクそれを呼び出すときhref javascript関数の "this"への参照をどのように渡しますか?

href="javascript:foo(this);" 

を。リンクへの参照をどのように渡すのですか?

http://jsfiddle.net/xMGKz/

編集ノート:質問はありません一般的に、HREFを渡す方法です - 私は約onclickを知っています!

idをコピーしてgetElementByIdを作成しない、これは「this」ではなく、特定の要素をDOMで検索し、HTMLでインライン化する必要はありません。

アンカーはできません。

答えて

18

hrefで "javascript:...."を使用すると、この関数をglobalyで呼び出すことになります。リンクの文脈ではありません。 あなたがして試すことができます:

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

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

+1

この呼び出しでは、 'this'は' a'要素に関係なく参照します。このイベントバインド方法はお勧めしませんが、DOM要素ではなくアンカーオブジェクト表現に結びつける方がよいでしょう。 –

+0

@Eliran Malka:Lxxが要求していたことを、参照によってA要素を渡すことにしています。 – MatuDuke

+0

私はそれがonclickで動作することを知っています、なぜそれがhrefで動作しないのだろうかと思っていただけです。グローバルに呼び出された場合、hrefでこれを参照する方法はありません。 – Ixx

1

まず、あなたのアンカーにIDフィールドを追加します。

その後...

は、標準のJavaScriptを使用して:

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

jQueryを使用する:

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

しかしこれにより、テキスト内のリンクごとにIDを2回挿入することができます。これは避けたいものです。 – Ixx

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> 
関連する問題