Ich versuche, ein Klickereignis auf einem Hyperlink mit jQuery wie unten beschrieben auszulösen. Hyperlink hat keine ID, aber eine CSS-Klasse
$(document).ready(function () { $('.cssbuttongo').trigger('click'); });
Die obige Funktion funktioniert nicht. Dies ist der Hyperlink
<a href="hyperlinkurl" class="cssbuttongo">hyperlink anchor</a>
Antworten:
Ich habe keine sachlichen Beweise, um dies zu beweisen, aber ich bin bereits auf dieses Problem gestoßen. Es scheint, dass sich das Auslösen eines click () -Ereignisses für ein
<a>
Tag nicht so verhält, wie Sie es beispielsweise mit einer Eingabeschaltfläche erwarten würden.Die Problemumgehung, die ich verwendet habe, bestand darin, die Eigenschaft location.href im Fenster festzulegen, wodurch der Browser die Anforderungsressource wie folgt lädt:
$(document).ready(function() { var href = $('.cssbuttongo').attr('href'); window.location.href = href; //causes the browser to refresh and load the requested url }); });
Bearbeiten:
Ich würde eine js-Geige machen, aber die Art der Frage, die sich damit vermischt, wie jsfiddle einen Iframe zum Rendern von Code verwendet, macht dies zu einem No-Go.
quelle
onclick
Ereignis hat. Tun Sie dies einfach$('.cssbuttongo')[0].click()
, um einen Klick in seiner Gesamtheit richtig zu simulieren.Die native DOM-Methode macht das Richtige:
$('.cssbuttongo')[0].click(); ^ Important!
Dies funktioniert unabhängig davon, ob
href
es sich um eine URL, ein Fragment (z. B.#blah
) oder sogar eine handeltjavascript:
.Beachten Sie, dass dies die DOM-
click
Methode anstelle der jQuery-click
Methode aufruft (die sehr unvollständig ist und vollständig ignoriert wirdhref
).quelle
$('.cssbuttongo').click(); // ignores href!
nicht garantiert, dass er funktioniert. Letzteres funktioniert immer, da bei Verwendung von index [0] jQuery Object zu einem regulären JS-Objekt wird, das genau dem entspricht, den ein Browser verwendet. @ Wei LiuZusätzlich zu Romkyns großartiger Antwort finden Sie hier einige relevante Dokumentationen / Beispiele.
DOM-Elemente haben eine native
.click()
Methode .Relevante W3-Dokumentation .
Ein paar Beispiele ..
Sie können von einem jQuery-Objekt aus auf ein bestimmtes DOM-Element zugreifen: (Beispiel)
$('a')[0].click();
Mit der
.get()
Methode können Sie ein DOM-Element aus einem jQuery-Objekt abrufen: (Beispiel)$('a').get(0).click();
Wie erwartet können Sie das DOM-Element auswählen und die
.click()
Methode aufrufen . (Beispiel)document.querySelector('a').click();
Es sei darauf hingewiesen, dass jQuery nicht erforderlich ist, um ein natives
.click()
Ereignis auszulösen .quelle
Durch Auslösen eines Klicks über JavaScript wird kein Hyperlink geöffnet. Dies ist eine im Browser integrierte Sicherheitsmaßnahme.
In dieser Frage finden Sie jedoch einige Problemumgehungen.
quelle
[0]
in Ihrer Geige wichtig istIch möchte euch nur wissen lassen, dass die akzeptierte Antwort nicht immer funktioniert.
Hier ist ein Beispiel, das fehlschlagen wird.
wenn
<href='/list'>
href = $('css_selector').attr('href') "/list" href = document.querySelector('css_selector').href "http://localhost/list"
oder Sie können die von jQuery erhaltene href an diese anhängen
href = document.URL +$('css_selector').attr('href');
oder jQuery Weg
href = $('css_selector').prop('href')
Rufen Sie es schließlich auf, um die URL der aktuellen Seite des Browsers zu ändern
window.location.href = href
oder Pop-out mit
window.open(url)
Hier ist ein Beispiel in JSFiddle.
quelle
$('css_selector')[0].click()
? Es funktioniert in dieser JsFiddle ...$('.cssbuttongo').click();
es nicht funktioniert, da es nur den Wert von href anstelle der URL von angibt Der Browser verwendet. Entschuldigung für die irreführenden Kommentare.[0].click()
funktioniert, warum erwähnt deine Antwort das nicht?location.href
Akzeptiert relative Pfade, sodass bei Verwendung/list
automatisch die aktuelle Domäne vorangestellt wird. Also funktioniert es.Ich hatte ein ähnliches Problem beim Klicken auf eine Schaltfläche anstelle eines Links. Es war nicht erfolgreich in den Methoden .trigger ('click') oder [0] .click (), und ich wusste nicht warum. Endlich hat folgendes für mich funktioniert:
$('#elementid').mousedown();
quelle