Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8572891
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 11, 20262026-06-11T19:07:39+00:00 2026-06-11T19:07:39+00:00

I have this code for show more/less of my comment with toggle. It works

  • 0

I have this code for show more/less of my comment with toggle. It works great. However I have another form for adding comments and that form is using jQuery ajax. So after adding a form the script is not working. I have to reload the whole page to show it working correctly. In the source I see the script loaded. It is also in side the part that is reloading.

Maybe I should change ready to load?

EDIT: onload is not helping either ;(

<script>
    $(document).ready( function () {
        $(".comment p").each(function() {
            var val = $.trim(this.innerHTML);
            var parsed = val.split(/\s+/);
            var cut = parsed;

            // for each word
            for (var i = 0, k = 0; i < parsed.length; i++) {
                k += parsed[i].length + 1;

                if (k - 1 > 50) {
                    cut = parsed.slice(0, i);
                    break;
                }
            }

            // if one long word
            if (cut.length == 0) {
                cut.push(parsed[0].substring(0, 50));
            }

            val = cut.join(" ");

            // if the text is long enough to cut
            if (cut.length != parsed.length) {
                this.innerHTML = val.replace(/[.,;?!]$/, "")
                    + "<span>...</span> ";

                $("<span />")
                    .css("display", "none")
                    .html(parsed.slice(cut.length).join(" ") + " ")
                    .appendTo(this);

                $("<a />", {
                    href : "#",
                    text : "[show more]"
                }).on("click", function(e) {
                    var sh = this.innerHTML == "[show more]";
                    $(this).prev("span").toggle(sh).prev("span").toggle(!sh);
                    this.innerHTML = sh ? "[show less]" : "[show more]";
                    e.preventDefault();
                }).appendTo(this);
            } else {
                this.innerHTML = val;
            }
        });
    });
</script>

EDIT: My ajax call looks like this (I am using CodeIgniter):

$.ajax({
    url : "<?php echo site_url('comments/add'); ?>",
    type : 'POST',
    data : form_data,
    success : function(msg) {
        var pathname = window.location.pathname;
        $('.comments-tbl-div').load(pathname + ' .comments-tbl-div');
        $('#comment-form-part').html(msg);
    }
});
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-11T19:07:41+00:00Added an answer on June 11, 2026 at 7:07 pm

    The problem is that the ready event is fired just one time (at load of document). The ajax engine fire the success event after ready document. So you should re-call your showMore engine.

    First, put your code in a callable function

    <script>
            function showMoreEngine($els) {
                $els.each(function() {
                var val = $.trim(this.innerHTML),
                    parsed = val.split(/\s+/),
                    cut = parsed;
    
                // for each word
                for (var i = 0, k = 0; i < parsed.length; i++) {
                    k += parsed[i].length + 1;
    
                    if (k - 1 > 50) {
                        cut = parsed.slice(0, i);
                        break;
                    }
                }
    
                // if one long word
                if (cut.length == 0) {
                    cut.push(parsed[0].substring(0, 50));
                }
    
                val = cut.join(" ");
    
                // if the text is long enough to cut
                if (cut.length != parsed.length) {
                    this.innerHTML = val.replace(/[.,;?!]$/, "")
                        + "<span>...</span> ";
    
                    $("<span />")
                        .css("display", "none")
                        .html(parsed.slice(cut.length).join(" ") + " ")
                        .appendTo(this);
    
                    $("<a />", {
                        href : "#",
                        text : "[show more]"
                    }).on("click", function(e) {
                        var sh = this.innerHTML == "[show more]";
                        $(this).prev("span").toggle(sh).prev("span").toggle(!sh);
                        this.innerHTML = sh ? "[show less]" : "[show more]";
                        e.preventDefault();
                    }).appendTo(this);
                } else {
                    this.innerHTML = val;
                }
            });
            }
    </script>
    

    call this function at ready event

       $(document).ready(function(e) { showMoreEngine($(".comment p"))});
    

    and in your ajax engine

     $.ajax({
            url : "<?php echo site_url('comments/add'); ?>",
            type : 'POST',
            data : form_data,
            success : function(msg)
                      {
                            var pathname = window.location.pathname;
                            // added here a callback function
                            $('.comments-tbl-div').load(pathname + ' .comments-tbl-div',{},function() {showMoreEngine( $(this).find('.comment p') )});
                            $('#comment-form-part').html(msg);
                            showMoreEngine( $('#comment-form-part').find('.comment p') );
                        }
                    });
    

    I think that you can optimize the code… but this can be a point of start.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have added a show more or less function to a div - this
I have this code to show a map using the Virtual Earth API: <script
i have this code in the button click to show selection image when the
i have this code from a tutorial: // Do the search and show the
So, I have this simple code $('#info_name'+index).show(slide, {direction: right}, 1000, function(){ $('#info_info'+index).show('slide',{direction: up}, 1000);
I have this email sending code that does not show a chooser (good). How
I have a problem, and I made this test code to show you my
If I have a block of code like this: def show @post = Post.find(params[:id])
This is the code I have. I'm trying to insert a image to show
I've used this code to have a like btn on my site: <iframe src=http://www.facebook.com/plugins/like.php?href=URL_OF_YOUR_WEBSITE&amp;send=false&amp;layout=standard&amp;width=450&amp;show_faces=true&amp;action=like&amp;colorscheme=light&amp;font&amp;height=80&amp

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.