Ankündigung

Einklappen
Keine Ankündigung bisher.

ReadMore Javascript Funktion

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ReadMore Javascript Funktion

    Hallo,

    ich bastel grad eine kleine ReadMore Funktion.
    Das Problem besteht darin wenn ich den String auf ein Leerzeichen prüfe und auch eins besteht funktioniert das Skript - ist aber kein Leerzeichen da fehlen ein paar wenige Buchstaben des Strings wo der String getrennt wurde

    Code:
    $(function() {
      $('.content').each(function(e) {
        e.prefentDefault;
        var max = 150; 
    
        if($(this).html().length > max) {
          var short_content = $(this).html().substr(0, max);
    
          if(short_content != '  ') {
            short_content = short_content.substr(0, short_content.lastIndexOf('  '));
          }
          
          var long_content = $(this).html().substr(max);
    
          $(this).html(short_content + ' <a href="#" class="readmore">mehr</a>' + '<span class="more" style="display:none;">' + long_content + '</span>');
          $(this).find('a.readmore').click(function(e) {
            e.preventDefault();
            $(this).hide();
            $(this).parents('.content').find('.more').show();
          });
        }
      });
    });

    Und noch eine Frage zum Schluss, Wenn sich in dem String eine URL befindet <a href="">Beispiel</a> und sich genau da der "ReadMore" nach x Zeichen setzt (wegen Leerzeichen nach dem a-Tag) gibt er logischer Weise die Adresse nicht als Link aus, da er sie trennt.

    Muss ich den String jedes mal auf Tags untersuchen oder gibt es da auch eine etwas umgängliche Lösung wie beispielsweise die LastIndexOf Funktion in JQUERY

    Ich hoffe ich konnte das Zweite Anliegen einigermaßen beschreiben

    Vielen Dank für Eure Hilfe!

  • #2
    ist aber kein Leerzeichen da fehlen ein paar wenige Buchstaben des Strings wo der String getrennt wurde
    Naja, die wirfst du ja hier selbst weg:
    PHP-Code:
    var short_content = $(this).html().substr(0max); 
    Zu deiner 2. Frage: Dafür solltest du dich durch das DOM hangeln. Nicht das html selbst parsen, das ist auch mit regex keine gute Idee. DOMElement.childNodes + Rekursion als google stichwort.
    I like cooking my family and my pets.
    Use commas. Don't be a psycho.
    [URL="http://jscouch.de"]Blog[/URL] - [URL="http://coverflowjs.github.io/coverflow/"]CoverflowJS[/URL]

    Kommentar

    Lädt...
    X