2015-08-31 3 views
1

Я пытаюсь ограничить символы элемента до 90 слов. Но когда нажата кнопка «Показать больше», она должна удалить предел.jQuery limit div characters to 90, когда есть определенный класс

Я попытался использовать класс, чтобы сделать это, и назначить ограничение классу, а затем удалить класс, когда нажата кнопка «Показать больше».

Моя попытка это:

 <header> 
      <h1>Heading Goes Here</h1> 
      <p class="jumbo-p non-exp"> 
       The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. 
      </p> 
      <a href="#" class="more1">more</a> 
     </header> 

CSS-:

 .jumbo-p{display: inline-block; height: 20px; overflow: hidden;} 
    .more1 {position: relative; left: 2px; top: -21px;} 
    .jumbo-p.expanded+.more1 {display: none} 
    .jumbo-p.expanded {height: auto;} 

JQuery, чтобы сделать его работу:

 $(".non-exp").text(function(index, currentText) { 
      return currentText.substr(0, 90) + '...'; 
     }); 
     $(document).on('click', '.more1', function(event) { 
      event.preventDefault(); 
      $('.jumbo-p').toggleClass('expanded'); 
      $('.jumbo-p').removeClass('non-exp'); 
     }); 

Это ставит ограничение на DIV, но что предел не удаляется при удалении класса. Пожалуйста помоги.

+0

Я думаю, что использование переполнения текста css свойство может это сделать. – huwence

+0

Переполнение текста ограничивает его на основе ширины div. я хочу ограничить его на основе длины символа –

+0

http://jsfiddle.net/z0vghqy5/1/ может быть вам может помочь. – huwence

ответ

1

Сохраните исходный текст в переменной и вставьте его в клик.

var text = $(".non-exp").text();  
$(".non-exp").text(function(index, currentText) { 
     return currentText.substr(0, 90) + '...'; 
    }); 
$(document).on('click', '.more1', function(event) { 
    event.preventDefault(); 
    $(".non-exp").text(text); 
    $('.jumbo-p').toggleClass('expanded'); 
    $('.jumbo-p').removeClass('non-exp'); 
}); 
+0

да, это большое спасибо тролле. –

2

Проблема в том, что вы заменили текст на «...». Вам нужно отменить это изменение, сохранив исходный текст где-нибудь и снова показывая его, нажав кнопку «больше». более

Одна вещь, я видел, как ты сказал, что

текст переполнения будет ограничивать его на основе ширины Див. я хочу, чтобы ограничить его на основе длины символов

Вы можете установить ширину Div в зависимости от количества символов, как этот

width: 90ch; 

Тем не менее, могут быть некоторые проблемы совместимости браузера. См. Больше на Specify width in *characters*

+0

Это хорошо, но ch как ширина по-прежнему не поддерживается широко, и мне нужно поддерживать IE8 и выше. Но в будущем это был бы отличный способ, так что upvote –

Смежные вопросы