Ergebnis 1 bis 10 von 10

Thema: Onclick Event im <div> Tag einfügen

  1. #1
    Contao-Nutzer
    Registriert seit
    08.11.2009.
    Beiträge
    191

    Standard Onclick Event im <div> Tag einfügen

    Hallo!

    Möchte einen gesamten <div> Container verlinken in dem Text und Bild via Contao eingebunden sind.

    HTML-Code:
    <div class="mod_article block">
    <div class="ce_text block" onclick="location.href='xyz.html';">
    Text
    Foto
    </div>
    </div>
    Leider habe ich keine Ahnung ob sich das irgendwie lösen lässt… bitte um Hilfe?

    Danke!

  2. #2
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Hallo Mecintosch

    Am einfachsten löst du das mit JS (jQuery).

    Weise dem Artikel bzw. dem Element eine Klasse zu. Zum Beispiel: divlink
    Danach sollte dein Quellcode so aussehen:

    Code:
    <div class="mod_article block">
    	<div class="ce_text block divlink">
    		Text
    		Foto
    	</div>
    </div>
    Dann folgendes JS dazu auf der Seite einfügen:

    Code:
    <script>
     $( document ).ready(function() { 
          $(".divlink").click(function(event) { 
            window.location.href = 'http://www.contao.org';
            event.preventDefault(); 
          }); 
     });
    </script>
    Wenn auf das DIV geklickt wird, wird die Seite http://www.contao.org aufgerufen
    Damit das aber funktioniert, musst du noch jQuery einbinden. Das kannst du in Contao 3 bequem im Seitenlayout einfügen. (Häkchen setzen) Ansonsten kurz von Hand einbinden.


    Hoffe, ich konnte dir weiterhelfen.

    Gruss
    Marco
    Geändert von marcos (06.12.2012 um 07:43 Uhr)

  3. #3
    Contao-Nutzer
    Registriert seit
    08.11.2009.
    Beiträge
    191

    Standard

    Hallo Marco,

    funktioniert perfekt - danke!

    Ich habe jetzt 4 divs mit jeweils anderer Ziel-URL…
    lässt sich das alles in einem <script> verpacken?

    Danke nochmals!

  4. #4
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Hallo Mecintosch

    Einfach jedem DIV eine eindeutige Klasse oder besser gleich eine ID zuweisen und für jedes einen Klick-Event schreiben.

    Code:
    <div class="mod_article block">
    	<div class="ce_text block" id="div1">Text / Foto </div>
    	<div class="ce_text block" id="div2">Text / Foto </div>
    	<div class="ce_text block" id="div3">Text / Foto </div>
    	<div class="ce_text block" id="div4">Text / Foto </div>
    </div>

    Code:
    <script>
     $( document ).ready(function() { 
          $("#div1").click(function(event) { 
            window.location.href = 'http://www.contao.org';
            event.preventDefault(); 
          });
          $("#div2").click(function(event) { 
            window.location.href = 'http://www.contao.org';
            event.preventDefault(); 
          }); 
          $("#div3").click(function(event) { 
            window.location.href = 'http://www.contao.org';
            event.preventDefault(); 
          }); 
          $("#div4").click(function(event) { 
            window.location.href = 'http://www.contao.org';
            event.preventDefault(); 
          });  
     });
    </script>

    LG Marco

  5. #5
    Contao-Nutzer
    Registriert seit
    01.11.2012.
    Ort
    Kiel
    Beiträge
    109

    Standard

    Moin Mecintosch und marcos,

    beim Lesen kam mir folgende Idee, vielleicht ja auch interessant.
    Den Link könntest du normal in ein <a href="...">-Element verpacken, welches innerhalb deines <div> steht. Damit es nicht sichtbar ist, gibst du diesem <a> die Klasse "invisible".
    Vorteil: dann brauchst du nur noch eine JavaScript-Funktion, die den jeweiligen Link dieses <div> aus dem innenliegenden <a> ausliest.
    Weiterer Vorteil: erhöhte Accessibility durch einen echten Link.
    Um die Accessibility noch weiter zu erhöhen, könntest du zusätzlich noch einen <noscript>-Bereich einfügen in der Art <a href="...">Klicken Sie hier, um auf die Seite ... weitergeleitet zu werden</a> (für Besucher ohne JavaScript).

    Vielleicht so?
    HTML-Code:
    <div class="ce_text block divlink">
    	<a href="..." class="invisible divlinktarget">Klicken Sie hier...</a>
    	<noscript><a href="...">Klicken Sie hier...</a></noscript>
    	Text
    	Foto
    </div>
    JavaScript:
    Beim Klick auf ein Element mit der Klasse "divlink" prüfen, ob dieses ein Kindelement mit der Klasse "divlinktarget" hat. Wenn das Attribut "href" dieses Kindelements gesetzt ist, auf diese URL weiterleiten.
    Code:
    <script>
    $(document).ready(function() { 
    	$(".divlink").click(function(event) {
    		var $divLinkTarget = $(event.target).children(".divlinktarget").first;
    		if ($divLinkTarget.attr("href")) {
    			window.location.href = $divLinkTarget.attr("href");
    		}
    		event.preventDefault(); 
    	}); 
    });
    </script>
    PS: Code ungetestet!

  6. #6
    Community-Moderator Avatar von schman
    Registriert seit
    19.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von MartinG Beitrag anzeigen
    Code:
    <script>
    $(document).ready(function() { 
    	$(".divlink").click(function(event) {
    		var $divLinkTarget = $(event.target).children(".divlinktarget").first;
    		if ($divLinkTarget.attr("href")) {
    			window.location.href = $divLinkTarget.attr("href");
    		}
    		event.preventDefault(); 
    	}); 
    });
    </script>
    PS: Code ungetestet!
    Vielleicht täusch ich mich ja aber ich dachte bei JS brauchts für eine Variable kein $ Zeichen
    Kein Privat Support via PM.

  7. #7
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    @MartinG
    Danke für deinen Input. Ist auch eine gute Lösung. Vorallem mit der Berücksichtigung der Browser mit deaktiviertem JS!


    Zitat Zitat von schman Beitrag anzeigen
    Vielleicht täusch ich mich ja aber ich dachte bei JS brauchts für eine Variable kein $ Zeichen
    kann man, muss man aber nicht

  8. #8
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von schman Beitrag anzeigen
    Vielleicht täusch ich mich ja aber ich dachte bei JS brauchts für eine Variable kein $ Zeichen
    Braucht nicht, kann aber. Macht der Gewohnheit denke ich.

    Wenn ich euch helfen konnte könnt ihr euch gerne mal
    meine Amazon Wunschliste anschauen. Dankeschön.

  9. #9
    Contao-Fan Avatar von melzebub
    Registriert seit
    21.05.2010.
    Ort
    Lüneburg
    Beiträge
    292
    User beschenken
    Wunschliste

    Standard

    man könnte das auch ohne js lösen. Einfach den Link in die Box packen, auf display block und position absolute setzen, ganze breite und höhe einnehmen, das elternelement auf position relative setzen, fertig. pflegbar im backend, kein skript und reines css. bei html5 könnte man sogar ein div mit dem a wrappen. da gibts dann aber probleme mit contao und den templates .
    Contao Webentwickler / Webdesigner aus Lüneburg - slash-works.de
    kein Support per PN. Fragen gehören ins Forum.

  10. #10
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Aber der Text ist dann eben nicht mehr kopierbar :-)

    Wenn ich euch helfen konnte könnt ihr euch gerne mal
    meine Amazon Wunschliste anschauen. Dankeschön.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •