wake-up-neo.net

So lösen Sie ein Klickereignis für das Element href aus

Ich versuche, mit jQuery ein Klickereignis auf einen Hyperlink auszulösen, wie im Folgenden beschrieben. Der 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>
73
MonsterMMORPG

Ich habe keine tatsächlichen Beweise, um dies zu beweisen, aber ich bin bereits auf dieses Problem gestoßen. Es scheint, dass das Auslösen eines click () -Ereignisses auf einem <a>-Tag scheint sich nicht so zu verhalten, wie Sie es von einem Eingabeknopf erwarten würden.

Die von mir verwendete Problemumgehung bestand darin, die Eigenschaft location.href im Fenster festzulegen, wodurch der Browser die Anforderungsressource folgendermaßen 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 mit der Frage vermischt, wie Jsfiddle einen Iframe verwendet, um Code zu rendern, macht dies zu einem No-Go.

65
Feisty Mango

Die native DOM-Methode macht das Richtige:

$('.cssbuttongo')[0].click();
                  ^
              Important!

Dies funktioniert unabhängig davon, ob es sich bei href um eine URL oder ein Fragment handelt (z. B. #blah) oder sogar ein javascript:.

Beachten Sie, dass dies die Methode DOM click anstelle der Methode jQuery click aufruft (die sehr unvollständig ist und href vollständig ignoriert).

186
Roman Starkov

Zusätzlich zu romkyns tolle Antwort .. hier sind einige relevante Dokumentationen/Beispiele.


DOM-Elemente haben eine native .click() -Methode .

Die HTMLElement.click() -Methode simuliert einen Mausklick auf ein Element.

Wenn click verwendet wird, wird auch das click -Ereignis des Elements ausgelöst, das zu Elementen weiter oben in der Dokumentstruktur (oder Ereigniskette) aufsteigt und auch deren click -Ereignisse auslöst. Das Sprudeln eines Klickereignisses bewirkt jedoch nicht, dass ein <a> - Element die Navigation so einleitet, als ob ein echter Mausklick empfangen worden wäre. (mdn reference)

Relevant W3-Dokumentation .


Einige Beispiele ..

  • Sie können über ein jQuery-Objekt auf ein bestimmtes DOM-Element zugreifen: (Beispiel)

    $('a')[0].click();
    
  • Mit der Methode .get() 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 systemeigenes .click() -Ereignis auszulösen.

28
Josh Crozier

Wenn Sie einen Klick über JavaScript auslösen, wird kein Hyperlink geöffnet. Dies ist eine Sicherheitsmaßnahme, die in den Browser integriert ist.

Siehe diese Frage für einige Problemumgehungen.

4
Blazemonger

Ich 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 das von jQuery erhaltene href an dieses 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 mit window.open(url) ausklappen

hier ist ein Beispiel in JSFiddle.

3
Alan Dong