2010-12-02 11 views
22

.jqueryのリンクをクリックしようとしています。誰かが次のことがうまくいかない理由を知っていますか?アンカーリンクをクリックしてシミュレーションする方法

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html lang="en"> 
    <head> 
    <title>test</title> 
    </head> 
    <body> 
    <div> 
     <a id="google_link" href="http://google.com" target="_blank">click to go to google</a> 
    </div> 
    <div id="google_link_proxy">click here to do the same as the link above</div> 

    <script type="text/javascript">  
    $("#google_link_proxy").click(function(event){ 
     $("#google_link").click(); 
    }); 
    </script> 
    </body> 
</html> 
+0

'.observe()'と '.fireEvent()'?ハァッ? jQueryはどこで学んだのですか?私は[この本](http://www.amazon.com/jQuery-Action-Bear-Bibeault/dp/1933988355)を提案します。 [jQuery API documentation](http://api.jquery.com/)も参照として優れています。 – BalusC

+0

質問を編集してその本来の意味を変更しないでください。 – JCM

+0

なぜこの世界であなたの質問に答えを追加していますか?このようにして、私たちは理解することはできません。あなたの問題は何だったのでしょうか? –

答えて

17

あなたの$("google_link_proxy")セレクタがオフであるように見えます。試してください$("#google_link_proxy")

また、オブザーバーコールを})で終了する必要があります。

これらの関数はデフォルトでjQueryで提供されているとは思われませんが、上記のコードでは構文エラーです。ここで

は、私はあなたが後にしていると思うものです:

$("#google_link_proxy").click(function(event){ 
    window.open($("#google_link").attr('href'),'_blank') 
}); 
+0

これは私が使い終わったものです。私は$( "#...")click()がうまくいかない理由を知らない。ありがとう – RayLoveless

+0

こんにちは、これはすべてのブラウザで正しくサポートされているかどうか分かりますか? – mirosval

+0

はい、私はそれがすべてのブラウザでサポートされていると思います。 –

2

使用click()はfireEvent

$("#google_link_proxy").click(
    function(){ 
     $("#google_link").click(); 
    } 
); 

と観察jQueryのAPI

+0

arg ..私はこれらのタイプミスを修正しましたが、まだ動作していません。 – RayLoveless

+0

'.observe()'もjQuery APIの一部ではありません。 – BalusC

+0

より良い例があるように編集しました。 FYI:ポップアップブロッカーがこれをブロックする可能性があります。 – epascarello

2

の一部ではない、あなたのjQueryのコードを持っていることを確認してください準備完了ブロック同様

すべてのコンテンツと画像が読み込まれた後、スクリプトが実行されるようにします。

21

あなたはjQueryとネイティブのDOMを使用する場合は、アンカーは、jQueryのメソッドが完全にhrefを無視

// insert an <a> into document and click it **natively** 
// (.get(0) returns the DOM element) 
$('<a id="fred99" />').attr('href', '#david').attr('target', '_blank') 
.text('LINK').appendTo('body').get(0).click(); 

// now we've clicked, tidy up 
$('#fred99').remove(); 
+5

IMO、これはjavascriptを使ってhrefの値を更新した既存のリンクをクリックしてもURLを開くことはできません。また、window.openを使用しないため、ポップアップブロッカーによってロックされません。このソリューションは完璧に動作します、ありがとう! –

32

クリックすることができます。

$('#google_link').click(); // ignores href! 

ネイティブDOMメソッドが正しいことを行います。

$('#google_link')[0].click(); 

これは、href URL、フラグメント(例: #blah)またはさらにはjavascript:である。

+1

はい!または、その構文がうまくいけば、jQueryの '.get()'メソッドを使いましょう:$( '#google_link')。get(0).click(); ' –

+0

これは間違いなく@MarkusAmaltheaMagnusonのコメント。みんなありがとう。 –

関連する問題