2008-12-05 11 views
24

Ich versuche mit jquery auf einen Link zu klicken. Es scheint nur ein Klickereignis zu sein, das "onclick" repliziert (d. H. Benutzereingabe). Ist es möglich, mit jquery tatsächlich auf einen Link zu klicken?Gibt es eine jQuery Click-Methode?

+3

Meinen Sie, den Klick auf einen Link programmatisch zu emulieren? – kgiannakakis

Antwort

35

Aus Ihrer Antwort:

$("a[0]") 

ist kein gültiger Selektor.

$("a:first") 

oder

$("a").eq(0). 

Also für die Wähler in Ihrer Antwort:

$("table[1]/tr[1]/td[1]/a").trigger('click'); 

Schreib

$("table").eq(1).children("tr").eq(1).children('td').eq(1).children('a').click(); 

Beachten Sie, wie die erste eine auf der Webseite zu erhalten Dies wird auf alle Links in der zweiten Tabelle klicken e Zelle der zweiten Tabellenzeile in der zweiten Tabelle auf Ihrer Seite.
Wenn Sie diese Methode verwenden die Seite an den href der eine der folgenden Methode Umleitung ist etwas schöner:

document.location = $("table").eq(1).children("tr").eq(1).children('td').eq(1).children('a').attr('href'); 

Hinweis, wie dieses Dokument Lage zum href des ersten Satzes wird eine in der zweiten gefunden Tabellenzelle der zweiten Tabellenzeile, die in der zweiten Tabelle auf der Seite gefunden wurde.
Wenn Sie die ersten Elemente anpassen möchten, verwenden Sie eq (0) anstelle von eq (1).

EDIT
Wenn Sie wirklich dieses 1337-haxxor tun wollen

$("table:eq(1) > tr:eq(1) > td:eq(1) > a").click(); 

aber ich denke, das andere Verfahren mehr readible ist.

EDIT

Okay, von Ihnen nächste Antwort/Frage thingie
Wie wäre es eigentlich nicht auf den Link klicken, sondern nur die document.location Zeichenfolge es Einstellung:

document.location = $("table").eq(0).children("tr").eq(0).children('td').eq(0).children('a').eq(0).attr('href'); 
+4

Danke Pim. Ich habe versucht, das Benutzerverhalten zu replizieren, aber das ist ein guter Workaround. Vielen Dank. – jedd

+0

Wenn dies die Antwort ist, die Sie verwenden, sollten Sie es akzeptieren. –

+1

Ändern von "document.location" hat nur einen Fehler: Es bricht die Zurück-Schaltfläche ... – BlaM

4

$ (- irgendein Objekt -). Trigger ('click') sollte den Trick machen.

+0

Dokumentation und Codebeispiel ist hier http://docs.jquery.com/Events/trigger –

+0

Works, aber Sie könnten genauso gut tun $ (Objekt) .click() –

8

Ich ziehe $(-some object-).click() zur besseren Lesbarkeit

Wenn Sie die Taste() -Methode eine Funktion übergeben, verhält es sich wie ein OnClick-Ereignis Bindung.

dh $ (- einige Objekt -) klicken (function() {-do Stuff-})

0

Ausprobieren auf diese Art und Weise:

$("table:first").find("tr:first").find("td:first").find("a:first").click(); 

Das wird das onclick Ereignis des the auslösen zuerst a in der ersten Zelle der ersten Zeile in der ersten Tabelle ... und es ist in sich sehr gut lesbar.

+0

Ich möchte das onclick-Ereignis nicht auslösen !!!!! Ich möchte programmtechnisch auf das Objekt klicken !!! Javascript-Entsprechung: window.document.getElementsByTagName ("Tabelle") [0] .rows [0] .cells [1] .children [0] .click(); – jedd

+0

"Programmgesteuert auf das Objekt klicken" Was bedeutet das, wenn nicht das Onclick-Ereignis des abgerufenen Elements auslösen? Sie möchten eine Onclick-Funktion zuweisen, oder? –

2
$("table:first").find("tr:first").find("td:first").find("a:first")[0].click(); 

Dies wird in Internet Explorer arbeitet, wenn das ist Ihr einziges Ziel, sonst bist du mit der document.location Lösung stucked.

4

Dies funktioniert erfolgreich:

$(document).ready(function() { 
     $("#horizontalSlideButton").trigger('click'); 
    }); 

Wo horizontalSlideButton ist die ID der Link, den Sie für das Click-Ereignis ausgelöst werden soll.

Sobald das DOM geladen wird, wird der Inhalt von $ (document) .ready (function() {} geladen.

Bitte markieren, wenn das hilft!

+0

ja .. Arbeit wie ein Charme :) –

3

Ich hatte ein ähnliches Problem und festgestellt, dass repliziert durch ein gefälschtes Ereignisobjekt erstellen und Dispatching es dann dispatch() mit einem Benutzer klicken sie sehr schön.

var event = document.createEvent("HTMLEvents"); 
event.initEvent("click", true, true); 
document.getElementById('myID').dispatchEvent(event); 

Offensichtlich ist dies nicht JQuery verwenden, aber es könnte helfen, in Ihrer Aufgabe

0

ziehe ich die Live-Funktion wie (für eine Klasse)

$(document).ready(function() { 
    $(".myclass").live('click', function(){//do something}); 

}); 

oder für eine ID

$(document).ready(function() { 
    $("#myid").live('click', function(){//do something}); 

}); 

Ich benutze eine span class verwenden, um meine Verbindung zu stylen und geben ihm eine Klasse oder id wie

<span class="link"><a href="javascript:void(0);" target="_new">my link/a></span> 
Verwandte Themen