Avatar billede silmarillion Juniormester
14. marts 2010 - 11:37 Der er 2 kommentarer

Repeat region/javascript

Hej Eksperter,

Jeg har lidt problemer med at få dette script til at virke korrekt.

Jeg har en repeat region, der virker korrekt, men når jeg tilføjer en div og et javascript der gennerere et læs mere link, så viser den samme tekst i stedet for den individuelle tekst.

    <?php do { ?>
      <table width="585" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td><h4> </h4>
            <h4>
            <?php echo $row_rsresultat['titel']; ?> </h4></td>
          </tr>
        <tr>
          <td>
          <div class="myContent">
          <?php echo $row_rsresultat['tekst']; ?>
          </div>

          </td>
          </tr>
      </table>
      <?php } while ($row_rsresultat = mysql_fetch_assoc($rsresultat)); ?>
 
  <script type="text/javascript">
    $('.myContent').moreLess();
</script>

Det der også er lidt mystisk er, at når jeg kigger i kilde koden, så er det den korrekte tekst der står!

I IE vises det korrekt, hvor teksten er kollapset, men med den samme tekst.

I Firefox, Safari og Chrome vises hele teksten (Dog ikke den korrekte tekst) efterfulgt af ... ... læs mere, teksten er altså ikke kollapset

Er der nogen forslag til hvad jeg gør galt?

Jeg vil gerne have vist den korrekte tekst, og have teksten vist kollapset som udgangspunkt

På forhånd tak for hjælpen
Avatar billede intenz Novice
14. marts 2010 - 22:27 #1
Vis os koden til din 'moreLess' funktion
Avatar billede silmarillion Juniormester
14. marts 2010 - 23:11 #2
Koden ersom følger, håber det hjælper:

jQuery.fn.moreLess = function(options) {
    var textID = this;
    var opts = $.extend({}, $.fn.moreLess.defaults, options);
    if ($(textID).text().length < opts.minimumTextLength)
        return $(this);

    if (!opts.startExpanded)
        InsertSpan(true, $(textID));
    InsertControls();

    $("span.moreLessControls").click(ControlClick);
    return $(this);
    function ControlClick() {
        var content = $(this).prev('.moreLessContent');
        var collapsed = content.length > 0;
        if (collapsed && content[0].style.display == 'none') {
            content.slideDown(opts.speed, function() {
                $(this).before(content.html()).remove();
                if (typeof opts.callback == 'function') {
                    opts.callback.call();
                }
            });
            ToggleControls(collapsed, $(this));
        }
        else {
            var parent = $(this).parent();
            $(this).remove();
            InsertSpan(false, parent);
            parent.append($(this));
            ToggleControls(collapsed, $(this));
            $(this).prev('.moreLessContent').slideUp(opts.speed, function() {
                if (typeof opts.callback == 'function') {
                    opts.callback.call();
                }
            });
            $(this).click(ControlClick);
        }
    }
    function ToggleControls(collapsed, control) {
        control.html(collapsed ? opts.expandedText : opts.collapsedText);
    }
    function InsertSpan(collapsed, control) {
        var index = opts.truncateIndex;
        var text = control.text();
        var html = control.html();
        if (opts.truncateChar != null) {
            index = control.text().indexOf(opts.truncateChar, index);
            if (index < 0 || index > opts.maximumTruncateIndex)
                index = opts.truncateIndex;

        }
        control.html(html.substring(0, index) + "<span class='moreLessContent' " + (collapsed ? "style='display:none;'" : "") + ">" + html.substring(index, html.length) + "</span>");

    };
    function InsertControls(expanded) {
        $(textID).append("<span class='moreLessControls'>" + (opts.startExpanded ? opts.expandedText : opts.collapsedText) + "</span>");
    }
};

// Default Options
$.fn.moreLess.defaults = {
startExpanded: false,
collapsedText: '... <span class="moreLessControl">... Læs mere</span>',
expandedText: ' <span class="moreLessControl">... Vis mindre</span>',
truncateIndex: 150,
maximumTruncateIndex: 200,
truncateChar: ' ',
minimumTextLength: 300,
speed: 'fast',
callback: null
};
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester