@skdon

Как сократить код?

День добрый!
Подскажите, пожалуйста, как можно сократить данный код?
Что бы не писать много одинаковых конструкций.
if (jQuery('.open-6').length > 0) {
        jQuery('.open-6').addClass('read-more-6');
        jQuery('.open-6').hide();
        jQuery('.open-form-6').toggle(function() {
            jQuery('.open-6').show(200);
        }, function() {
            jQuery('.open-6').hide(200);
        })
    }
    if (jQuery('.open-7').length > 0) {
        jQuery('.open-7').addClass('read-more-7');
        jQuery('.open-7').hide();
        jQuery('.open-form-7').toggle(function() {
            jQuery('.open-7').show(200);
        }, function() {
            jQuery('.open-7').hide(200);
        })
    }
  • Вопрос задан
  • 175 просмотров
Пригласить эксперта
Ответы на вопрос 3
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
иметь 1 класс open а номер передавать в data атрибуте. Хотя я не понимаю зачем Вам эта нумерация вообще нужна. Вы бы задачу описали, а не код. Так как видимо Вы в принципе решаете ее не верно
Ответ написан
Во-первых, раз вы работаете с классами, не понятно почему вы добавляете классы: read-more-{ID} что они в себе несут?
Во-вторых, можно создать один уникальный класс использовать его везде в ваших блоках.
В-третьих, можно при клике (если у вас вообще используется такой обработчик) просто брать дата-атрибут ID (который вы укажите на каждом блоке) и подставлять в место цифры в ваше условие:$('.open-'+ID)
Но я считаю это глупой практикой, лучше использовать второй вариант.
Ответ написан
Комментировать
function someFunc( id ) {
    var baseClass = '.open-' + id;
    if ($(baseClass).length > 0 ) {
        $( baseClass ).addClass( 'read-more-' + id ).hide();
        $('.open-form-' + id).toggle( function() {
            $(baseClass).show( 200 );
        }, function() {
            $(baseClass).hide( 200 );
        } )
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы