2014-02-07 3 views
0

Я нашел код для ограничения символов в div, но он не работает, когда моя строка отформатирована в html.Предельные символы, отображаемые в div без потери форматирования

var myDiv = $('.credits'); 
myDiv.text(myDiv.text().substring(0,162)); 

Я хочу ограничить символы в div, но без потери форматирования. Я могу использовать php, javascript или jquery.

Спасибо за вашу помощь заранее.

HTML структура myDiv:

<p>this is my test <b>hello</b> <i>world</i></p> 
+1

Обеспечить HTML структуру 'myDiv' –

+1

Пусть ваш "форматирование" означает DOM дерево, то вы должны разобрать цельные для сохранения формата. Теперь взгляните на эту страницу или на любую страницу, как вы или кто-нибудь обрезаете текст без потери формата? Если никто не сможет этого сделать, никто не сможет ответить на этот вопрос. – Johnny

+0

Это HTML структура myDiv:

это мой тест привет мир

ответ

0

попробовать это

<body> 
<div id="test_div"> 
<h1>TITRE</h1> 
<p><strong>Texte en gras</strong><br /> 
<em>Texte en italique</em><i> texte avec balise i</i> <span>texte normale </span><strong> autre gras</strong></p> 
</div> 
<script> 
$(function(){ 
    var nb_limit=5 ,nb_all_charac=0,clean_all=false; 
    var fonc_clean_balise=function($v_element,maxi_chara){ 
     if($v_element.children().length) 
      $v_element.children().each(function(index, element) { 
       var $child=$(element); 
       fonc_clean_balise($child,maxi_chara); 
       maxi_chara=(maxi_chara-$child.text().length); 
       maxi_chara=(maxi_chara<0)?0:maxi_chara; 

      }); 
     else{ 
      $v_element.text($v_element.text().substring(0,maxi_chara)); 
     } 
    }; 
    $('#test_div').children().each(function(index, element) { 
     $element=$(element); 
     if(!clean_all){ 
      nb_all_charac+=$element.text().length; 
      if(nb_all_charac>nb_limit){ 
       clean_all=true; 
       var lower_limit=nb_limit-nb_all_charac; 
       nb_limit=(lower_limit<0)?nb_limit:lower_limit; 
       fonc_clean_balise($element,nb_limit); 
      } 
     }else{ 
      fonc_clean_balise($element,0); 
     } 
    }); 
}); 
</script> 
</body> 
+0

Привет, спасибо за ваш код. он прекрасно работает, но мой HTML выглядит так:

это мой тест привет мир

+0

если текст не имеет никакого форматирования, помещает его в пролете Например:

это мой тестпривет мир

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