Задать вопрос
bearzru
@bearzru
newbie

Как «это» можно сократить?

Пример:
function getMod(m1, m2, m3) {
    $('#a1').hide();
    $('#a2').hide();
    $('#a3').hide();

    if (m1 == true) {
        $('#a1').show();
    }
    if (m2 == true) {
        $('#a2').show();
    }
    if (m3 == true) {
        $('#a3').show();
    }
}
  • Вопрос задан
  • 2407 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 3
aen
@aen
Keep calm and 'use strict';
function getMod(m1, m2, m3) {
    $('#a1')[m1 ? 'show' : 'hide']();
    $('#a2')[m2 ? 'show' : 'hide']();
    $('#a3')[m3 ? 'show' : 'hide']();
}
Ответ написан
Комментировать
Код изначально кривой, но можно как-нибудь так:

function getMod(m1, m2, m3) {
    var map = {'#a1':m1, '#a2':m2, '#a3':m3}
    for(var id in map) {
      $(id)[map[id]?'show':'hide']();
    }
}
Ответ написан
yamaoto
@yamaoto
la programmeur
var a=['a1','a2','a3'];

function getMod() {
   for(var i=0;i<a.length;i++){
     if(arguments[i]===true)$('#'+a[i]).show()
     else $('#'+a[i]).hide()
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
index0h
@index0h
PHP, Golang. https://github.com/index0h
function getModElement(selector, value) {
    $(selector)[value? 'show' : 'hide']();
}

function getMod(m1, m2, m3) {
    getModElement('#a1', m1);
    getModElement('#a2', m2);
    getModElement('#a3', m3);
}
Ответ написан
Комментировать
CanVas
@CanVas
Веб-мастер
Использовать общий класс к примеру:
function getMod(m1, m2, m3) {
    $('.a').hide();

    if (m1 == true) {
        $('.a').eq('1').show();
    }
    if (m2 == true) {
        $('.a').eq('2').show();
    }
    if (m3 == true) {
        $('.a').eq('3').show();
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы