#jquery
#jquery
Вопрос:
function cropText(crop) {
var str = $('div').text();
var val=str.substring(0,crop) '...';
$('div').html(val);
}
$(window).ready(function(){
var w = $(window).width();
if ( w > 500 ) {
cropText(50);
} else {
cropText(20);
}
})
$(window).resize(function(){
var w = $(window).width();
if ( w > 500 ) {
cropText(50);
} else {
cropText(20);
}
})
Проблема в том, что при ширине окна менее 500 пикселей текст обрезается до 20 символов, но когда я изменяю размер этого окна (ширина будет больше 500 пикселей), функция cropText() вырежет обрезанный текст. Но мне нужно, чтобы функция cropText() всегда обрезала исходный текст.
Заранее спасибо.
Комментарии:
1. Вы можете получить эту функциональность изначально (с соответствующим CSS и разметкой) — нет необходимости использовать javascript
Ответ №1:
Вот ваш рабочий пример. http://jsfiddle.net/q8Cfq /
Ваша переменная должна находиться вне функции, чтобы вы могли обращаться к ней каждый раз, когда она вызывается как исходная.
var str;
$(window).ready(function(){
str = $('div').text();
var w = $(window).width();
if ( w > 500 ) {
cropText(50);
} else {
cropText(20);
}
})
Тогда вы могли бы сделать что-то подобное. Потому что он обращается к глобальной переменной, которая была установлена в начале. функция не изменяет его содержимое.
function cropText(crop) {
var val=str.substring(0,crop) '...';
$('div').html(val);
}
Ответ №2:
Это происходит потому, что при вызове resize() вы обрезаете уже обрезанный текст.
Вам нужно сохранить исходный текст где-нибудь в переменной и обрезать по нему, а не по уже обрезанной версии.
Ответ №3:
При вызове cropText() исходный текст отбрасывается. Оригинал нигде не сохраняется.
Вы могли бы создать скрытый div, содержащий исходный текст, подлежащий обрезке, и скопировать исходный текст в этот div.
function cropText(crop) {
var str = $('#hidden-div').text();
var val=str.substring(0,crop) '...';
$('div').html(val);
}