jQuery, on-click Event

  • Hallo zusammen,


    ich hätte eine kurze Frage an euch und zwar geht es darum, diverse Events in meine Webseite mittels jQuery einzubauen. Beispielsweise möchte ich prüfen, ob auf ein <div> Element einer bestimmten Klasse geklickt wurde und wenn ja, dann hole die Data-Attribute und mach damit etwas. Derzeit verwende ich folgenden Code (RE: jQuery in Joomla 4 einbinden



    Folgende Fragen:


    • Ich habe über Event-Listener schon gelesen, wäre das hier ggf. angebracht das zu verwenden? Die Implementierung wie oben funktioniert (zumindest) bei mir
    • Ist window.open(link) eine gute Wahl? Oder gibt es hierbei noch wesentlich bessere Optionen?
    • Wäre es auch möglich, anstelle ein File zu öffnen, auch eine Art »internen Link« zu öffnen, quasi analog zu einem <a> Element


    Letzter Punkt wäre dann wie folgt von mir gedacht:


    Code
    <div class="divSelector" style="height:100px; width="400px" data-link="impressum">
      <a href="impressum">Impressum</a>
    </div>


    Entsprechend kann man auf den <a> Link klicken aber zusätzlich würde ein Klick auf den div Container auch zu einer Weiterleitung führen. Ich finde es persönlich ansprechender, wenn größere Elemente »klickbar« sind, als nur einzelne <a> Elemente. Die Frage hier wäre, ob das mit window.open() auch klappt oder ob man hier eher dann auf window.locationhref=link-attribut geht.

    Möglicherweise ist das auch alles sehr veraltet und macht nur Probleme.


    Tobi

  • Normales Öffnen eines Links geht entweder mit window.location.href oder du simulierst den Klick auf das Link-Element mit $('a').click(); (muss natürlich spezifischer sein als das hier).


    Auf der anderen Seite stellt sich mir die Frage, ob das so überhaupt nötig bzw. sinnvoll ist. Besteht denn alternativ die Möglichkeit, das Link-Element mittels display: block so zu stylen, dass es so groß ist, wie du es haben möchtest? Aus Sicht der Nutzerfreundlichkeit und Barrierearmheit ist es fast immer besser, Elemente nicht zweckzuentfremden, sondern die dafür vorgesehenen Elemente zu nehmen. Also keinen div als Link zu verwenden, sondern a. Ebenso keinen <a> als Button zu verwenden, sondern einen <button>.

  • Hallo,


    danke für die Rückmeldung. Das macht natürlich Sinn, Elemente nicht zu entfremden. Das ist meine derzeitige Seite mit PB und sonstigem (https://bit.ly/2WGxA28). Wie Du siehst sind die <div> Elemente auch »anklickbar«. Ich baue die Seite gerade selber auf meinem NAS und Joomla 4 nach und komm eigentlich ganz gut damit zurecht. Ich werde mir das mit deinem Block etwas genauer anschauen, weiß aber nicht ob das möglich ist.

    Das Bild unten zeigt meine derzeitige Website in Joomla 4. Das ich ggf. nicht alles sauber mache sei mir verziehen, aber ich bemühe mich die Dinge gut umzusetzen.


  • Noch zu beachten ist, das ja keine Fallback gibt wenn man nicht mit Links arbeitet. Wenn "nicht-JS" User egal sind und die JS Aktionen nicht grundlegend für die Funktion passt das dann schon. ;) Ich würde den Link auf ein <a href> legen und mit preventDefault abbrechen.


    Datenbank Statistik und Co. über ein php-Download-Script fail-safe abwickeln. Da ist JS nicht so doll geeignet.


    On.click ist ein Event listener der gut funktioniert.


    Gruß