2010-01-13 18 views
14

Ich habe eine einfache Verknüpfung klicken Simulation, die ich mit jQuery tun möchte. Von dem, was ich gelesen habe, sollte dies funktionieren, aber der Code unten funktioniert nicht. Nichts passiert, wenn ich dasselbe wie ein Teil eines anderen Ereignisses oder etwas anderes mache. Gedanken?jquery klicken funktioniert nicht auf Hyperlink

<script type="text/javascript"> 
    $(function() { 
    $("#lnk_0").click(); 
    }); 
</script> 

<a id="lnk_0" href="http://mydomain.com/mypage.html">link</a> 

Antwort

23

Siehe click():

Löst das Click-Ereignis jedes verglichene Element.

Bewirkt, dass alle Funktionen, die an dieses Klickereignis gebunden haben, ausgeführt werden.

Die wichtige Sache zu beachten ist, dass es funktioniert nicht Duplikat auf den Link klicken. Es löst nur zugeordnete Ereignisse aus. Wenn Sie möchten, Position ändern:

var link = $("#link_0"); 
link.click(); 
window.location.href = link.attr("href"); 

aber auch das ist nur eine Annäherung, da es nicht für Event-Handler Ausbreitung nicht gerecht zu stoppen.

+1

okay, danke für die Klarstellung. Ich habe tatsächlich einige Zeit damit verbracht, auf die genaue Dokumentation zu starren. Ich denke, dass das Navigieren zum neuen Standort als "assoziiertes Ereignis" gilt. Ich denke, technisch ist es nicht? :/ Ich werde diese Antwort akzeptieren, aber SLaks Eingabe ist auch sehr hilfreich. Lassen Sie das als Antwort auf die Programmierer ein für allemal stehen! $ ("# my_hyperlink"). click() führt nicht zur Navigation des Browsers! – Sean

7

Der Aufruf der Methode click von jQuery ruft alle von Ihnen hinzugefügten click-Handler auf, ohne auf den Link zu klicken.

Sie müssen schreiben:

window.location = $("#lnk_0").attr('href'); 

(Dies setzt voraus, dass es keine click Event-Handler)


EDIT: Als Antwort auf Ihren Kommentar, können Sie die IE- nennen nur DOM click Methode, wie folgt aus:

if ($("#lnk_0")[0].click) 
    $("#lnk_0")[0].click(); 
else 
    window.location = $("#lnk_0").attr('href'); 
+0

SLaks, danke für deine Lösung. Das einzige Problem ist, dass es den wirklich nervigen Nebeneffekt hat, den Referer URL Header im IE zu verlieren, was ich zu verhindern versuche. – Sean

-1

ich bin nicht sicher, es löst Ihre p recise Problem, aber hier ist ein Code-Snippet Ich benutze einen Benutzer klicken Sie zu simulieren:

var target = "..."; 

var e = jQuery.Event("click"); 

target.trigger(e); 

if (!e.isDefaultPrevented() && target.attr("href")) 
    window.location.href = target.attr('href'); 
4

den Hyper-Link-Funktionalität zu ermöglichen (Hover, Hand-Cursor, usw.), wenn sie mit jQuery überschreiben Sie können folgendes tun:

<script> 
    $(function() { 
     $("#dialog-modal").dialog({ 
      autoOpen: false, 
      height: 320, 
      modal: true 
     }); 

     $("#open-modal").click(function() { 
      $("#dialog-modal").dialog("open"); 
     });   
</script> 
<a href="javascript:return true" id="open-modal">Open Modal</a> 

<div id="dialog-modal" title="Hello World"> 
Hello 
</div> 
Verwandte Themen