Показать сообщение отдельно
  #1 (permalink)  
Старый 15.01.2013, 12:13
Интересующийся
Отправить личное сообщение для Sober_exe Посмотреть профиль Найти все сообщения от Sober_exe
 
Регистрация: 27.02.2012
Сообщений: 18

Обрезка имя пункта меню. рефакторинг скрипта
Добрый день.
Была задача - обрезать название пункта меню, если длинное, по пробелу (т.е. не обрубить слово по середине) и почистить от союза "и".

Пример: Есть пункт меню "Оборудование Wi-Fi и Bluetooth" - оно длинное для дизайна меню, нужно что бы вывелось часть названия, так "Оборудование Wi-Fi", а не так "Оборудование Wi-Fi и Blueto" к примеру (overflow: hidden; не подходит по тем же причинам).

Написал следующее:
var str, newStr, cropIndex;

        $('li').each(function (){
            str = $(this).text(); //берём название пункта меню
            if(str.length > 21){ //проверяем длину
                str = str.slice(0, 21) // берём допустимую часть
                cropIndex = str.lastIndexOf(' '); // определяем индекс пробела с конца строки
                newStr = str.slice(0, cropIndex); // обрезаем до пробела
                cropIndex = newStr.lastIndexOf(' и'); // аналагично проделываем с "и"
                newStr = str.slice(0, cropIndex);
                $(this).text(newStr); //записываем новую строчку
            }
        });


Знатоки JS, скажите, можно ли изящнее написать данный код

Последний раз редактировалось Sober_exe, 15.01.2013 в 12:59.
Ответить с цитированием