Search code examples
htmljquerycssellipsis

Using Jquery to detect ellipsis


I have a long sentence showing ellipsis at the end.

I want to use jquery to detect if ellipsis is there, a popup will show up.

But somehow popup doesn't show when the page loads.

Please give me a hand.

var e = $('.text')[0];

if (e.scrollWidth > e.clientWidth) {
    alert("Ellipsis")
}
.text {
    -webkit-line-clamp: 5;
    -webkit-box-orient: vertical;
    display: -webkit-box;
    overflow: hidden;
    text-overflow: ellipsis;
}

.width{
 width: 30%
 }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="width">
<div class="text">  Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad recusandae perspiciatis accusantium quas aut explicabo ab. Doloremque quam eos, alias dolore, iusto pariatur earum, ullam, quidem dolores deleniti perspiciatis omnis.</div>
</div>


Solution

  • You will need to check each element in turn and set the class. You also need to account for a screen re-size. Here I add a resize event handler and then trigger it on startup as well as handle it when the screen re-sizes.

    To test this here us the "Full page" on the output window and resize the browser.

    function checkEm() {
      $(".text")
        .removeClass('wrapped-el')
        .filter(function() {
          return this.scrollHeight > this.offsetHeight;
        })
        .addClass('wrapped-el');
    }
    $(window).on('resize', checkEm).trigger('resize');
    .text {
      -webkit-line-clamp: 4;
      -webkit-box-orient: vertical;
      display: -webkit-box;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    
    .width {
      width: 30vw;
    }
    
    .width-m {
      width: 45vw;
    }
    
    .width-mw {
      width: 60vw;
    }
    
    .width-w {
      width: 100vw;
    }
    
    .wrapped-el {
      border: solid red 1px;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div class="width">
      <div class="text"> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad recusandae perspiciatis accusantium quas aut explicabo ab. Doloremque quam eos, alias dolore, iusto pariatur earum, ullam, quidem dolores deleniti perspiciatis omnis.</div>
    </div>
    <div class="width-m">
      <div class="text"> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad recusandae perspiciatis accusantium quas aut explicabo ab. Doloremque quam eos, alias dolore, iusto pariatur earum, ullam, quidem dolores deleniti perspiciatis omnis.</div>
    </div>
    <div class="width-mw">
      <div class="text"> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad recusandae perspiciatis accusantium quas aut explicabo ab. Doloremque quam eos, alias dolore, iusto pariatur earum, ullam, quidem dolores deleniti perspiciatis omnis.</div>
    </div>
    <div class="width-w">
      <div class="text"> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad recusandae perspiciatis accusantium quas aut explicabo ab. Doloremque quam eos, alias dolore, iusto pariatur earum, ullam, quidem dolores deleniti perspiciatis omnis.</div>
    </div>