Проблема с функцией JQuery. Добавление слишком много классов - PullRequest
0 голосов
/ 01 декабря 2019

У меня проблема с этой функцией. Проблема с TD-индексом 2, как прокомментировано ниже. HTML-код в каждой итерации правильный, но я не могу понять, почему он добавляет дополнительные классы? Класс должен совпадать с HTML.

1-я итерация: HTML: A КЛАСС: A

2-я итерация: HTML: B КЛАСС: AB

3-я итерация: HTML: C CLASS: ABC

4-я итерация: HTML: A CLASS: ABC

5-я итерация: HTML: B CLASS: ABC

6-я итерация: HTML: C CLASS: ABC

function formatTable(){
    count=1;
    phase="";
    var phase13 = $('input[name=voltage]:checked').attr("phase");
    var cClass =  $('input[name=voltage]:checked').attr("cClass");

    $tableID.find('tbody tr').each(function(idx){
        $(this).children().eq(1).html(count++);

        switch (phase13){
            case "1":
                if ((count) % 4 == 0) {
                    phase = "B";
                } else {
                    phase = "A";
                }
                break;
            case "3":
            default:
                if ((count+1) % 3 == 0){
                    phase="A";
                } else {
                    if (count % 3 == 0){
                        phase="C";
                    } else {
                        phase="B";
                    }
                }
                break;
        }

        $(this).children().eq(2).html(phase).addClass(cClass).addClass(phase);  // This sets HTML to A, B or C, but after the 3rd iteration adds Class A, B and C.
        $(this).children().eq(3).html(count++);
    });
}

1 Ответ

0 голосов
/ 01 декабря 2019

Ваша проблема в том, что вы никогда не удаляете старый класс phase, поэтому новый класс просто добавляется в список. Добавьте removeClass('A B C') перед добавлением нового класса фазы:

$(this).children().eq(2).html(phase).addClass(cClass).removeClass('A B C').addClass(phase);

Используя removeClass('A B C'), вам не нужно беспокоиться о том, чтобы выяснить, какой класс фазы был в данный момент установлен для элемента, так как это удалит ихвсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...