2013-11-12 4 views
0

Я пытаюсь обрезать количество текста в div, когда текст достигает 40 символов и добавляет многоточие после усечения. Это мой код:Выполнение функции после проверки длины символа

jQuery(document).ready(function($) { 
$(".trim").text(function(index, text) { 
return text.substr(0, 40)+' ...'; 
}); 
}); 

Проблема заключается в том, что добавляет многоточие, даже если длина символов меньше, чем 40 символов, добавляя многоточие, даже если текст не отбрасывается. Так что в следующий я попробовал условно запустить функцию только, если длина символа меньше, чем 40 символов, но безрезультатно:

jQuery(document).ready(function($) { 
if($(".trim").length > 40) { 
$(".trim").text(function(index, text) { 
return text.substr(0, 40)+' ...'; 
}); 
} 
}); 

Любые идеи?

+0

Пожалуйста, форматировать Ваш код. –

ответ

4

Вы почти у цели! Ваше условие не проверяет длину текста в div. Вы проверяете объект .length объекта jQuery, который будет равен 1 (количество элементов, найденных селектором). Вам необходимо проверить длину фактического текста внутриdiv. Избавиться от if снаружи и перемещения по длине проверки внутри функции, который вы передаете в .text():

$(".trim").text(function(index, text) { 
    var newText = text; 

    if(text.length > 40) { 
     newText = text.substr(0, 40) + "..."; 
    } 

    return newText; 
}); 
+0

Отлично! Спасибо, Вивинь. Теперь большой маленький скрипт. – scmccarthy22

+0

На самом деле, Vivin, я пытаюсь усечь это предложение, содержащее ссылку. Когда я использую этот скрипт, он урезает предложение, но он также нарушает связь. Любые идеи о том, как избежать этого? Я исправлю, что он подсчитывает символы в html, а не «выводимый» текст? – scmccarthy22

+0

Не могли бы вы опубликовать это снова, используя обратные ссылки? Сырой HTML игнорируется, поэтому я не вижу, что именно вы пытаетесь усечь. –

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