webentwicklung-frage-antwort-db.com.de

So lösen Sie mit jQuery einen Klick auf einen Link aus

Ich habe einen Link:

<ul id="titleee" class="gallery">
  <li>
    <a href="#inline" rel="prettyPhoto">Talent</a>
  </li>
</ul>

und ich versuche, es auszulösen, indem ich benutze:

$(document).ready(function() {
  $('#titleee').find('a').trigger('click');
});

Aber es geht nicht.

Ich habe auch versucht: $('#titleee a').trigger('click');

Bearbeiten:

Ich muss eigentlich alles auslösen, was hier aufgerufen wird <a href="#inline" rel="prettyPhoto">

208
Patrioticcow

Wenn Sie versuchen, ein Ereignis auf dem Anker auszulösen, funktioniert der Code, den Sie haben. Ich habe Ihr Beispiel in jsfiddle mit einem hinzugefügten eventHandler neu erstellt, damit Sie sehen können, dass es funktioniert:

$(document).on("click", "a", function(){
    $(this).text("It works!");
});

$(document).ready(function(){
    $("a").trigger("click");
});

Versuchen Sie, den Benutzer durch Klicken auf den Anker zu einem bestimmten Punkt auf der Webseite zu navigieren, oder lösen Sie Ereignisse aus, die an ihn gebunden sind? Vielleicht haben Sie das Klickereignis noch nicht erfolgreich an das Ereignis gebunden?

Auch diese:

$('#titleee').find('a').trigger('click');

ist das Äquivalent dazu:

$('#titleee a').trigger('click');

Sie müssen find nicht anrufen. :)

263
Kit Sunde

Sorry, aber der Eventhandler wird wirklich nicht benötigt. Was Sie brauchen, ist ein weiteres Element innerhalb des Tags, auf das Sie klicken können.

<a id="test1" href="javascript:alert('test1')">TEST1</a>
<a id="test2" href="javascript:alert('test2')"><span>TEST2</span></a>

Abfrage:

$('#test1').trigger('click'); // Nothing
$('#test2').find('span').trigger('click'); // Works
$('#test2 span').trigger('click'); // Also Works

Hier geht es darum, was Sie anklicken und es ist nicht das Tag, sondern die Sache in ihm. Leider wird nackter Text von JQuery nicht erkannt, aber von Vanilla Javascript:

document.getElementById('test1').click(); // Works!

Oder indem Sie auf das jQuery-Objekt als Array zugreifen

$('#test1')[0].click(); // Works too!!!
187

Mit dem von Ihnen angegebenen Code können Sie nicht erwarten, dass etwas passiert. Ich zweite @mashappslabs: zuerst einen Event-Handler hinzufügen:

$("selector").click(function() {
    console.log("element was clicked"); // or alert("click");
});

dann löse dein Event aus:

$("selector").click(); //or
$("selector").trigger("click");

und Sie sollten die Nachricht in Ihrer Konsole sehen.

5
Julz

Wenn Sie versuchen, ein Ereignis auf dem Anker auszulösen, funktioniert der Code, den Sie haben.

$(document).ready(function() {
  $('a#titleee').trigger('click');
});

OR

$(document).ready(function() {
  $('#titleee li a[href="#inline"]').click();
});

OR

$(document).ready(function() {
  $('ul#titleee li a[href="#inline"]').click();
});
5
Anand Pal

Da diese Frage in Google auf Platz 1 für "Auslösen eines Klicks auf ein <a> -Element" steht und in keiner Antwort angegeben ist, wie Sie das tun, geschieht dies folgendermaßen:

$('#titleee a')[0].click();

Erläuterung: Sie lösen ein click für das zugrunde liegende HTML-Element und nicht für das jQuery-Objekt aus.

Gern geschehen Googler :)

5
Alex

Für Links sollte dies funktionieren:

eval($(selector).attr('href'));
3
Amin

Nun, Sie müssen zuerst das Klick-Ereignis einrichten, dann können Sie es auslösen und sehen, was passiert:

//good habits first let's cache our selector
var $myLink = $('#titleee').find('a');
$myLink.click(function (evt) {
  evt.preventDefault();
  alert($(this).attr('href'));
});

// now the manual trigger
$myLink.trigger('click');
3
Ady Ngom

Dies ist die Demo zum Auslösen eines Ereignisses

<!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
        $("input").select(function(){
            $("input").after(" Text marked!");
        });
        $("button").click(function(){
            $("input").trigger("select");
        });
    });
    </script>
    </head>
    <body>

    <input type="text" value="Hello World"><br><br>

    <button>Trigger the select event for the input field</button>

    </body>
    </html>
3

Sie sollten die native .click () -Methode des Elements aufrufen oder die createEvent-API verwenden.

Weitere Informationen erhalten Sie unter: https://learn.jquery.com/events/triggering-event-handlers/

2

Dies beantwortet Ihre Frage nicht genau, führt jedoch zu dem gleichen Ergebnis mit weniger Kopfschmerzen.

Ich habe immer Methoden zum Aufrufen von Click-Ereignissen, die die gesamte Logik enthalten, die ich ausführen möchte. Damit kann ich die Methode einfach direkt aufrufen, wenn ich die Aktion ohne einen tatsächlichen Klick ausführen möchte.

2
Matthew Vines