Почему jQuery не добавляет класс «drop1»? - PullRequest
0 голосов
/ 29 декабря 2018

Я написал код для мобильной навигации с подменю и попытался добавить класс, используя jQuery и javascript, но оба метода не добавили класс «drop1» или «drop2» к элементу, по которому щелкнули.

Я уже пытался отловить ошибку, но никого не было

$("ul#main-menu > li[class ^= level1-]")
    .prev("img")
    .addBack()
    .on("click", async ()=> {
        try {
            await $(this).addClass("drop1");
            cl2 = this;
            cl2.className += "drop1";
        } catch(e) {
            console.log(e);
        }
    })
    .each((i, elem)=> {
        if($(elem).hasClass("drop1")) {
            let newElem = $(elem);
            if($(elem).is("img")) {
                newElem = $(elem).closest("li");
                $(elem).removeClass("drop1");
                newElem.addClass("drop1");
            }
        } else {
            return;
        }
        newElem
            .nextUntil("li")
            .animate({
                "transform": "rotate(180deg)"
            }, 300);
        newElem
            .children("ul[class $= m1]")
            .slideDown(300)
            .children("li[href = #]")
            .on("click", async ()=> {
                try {
                    await $(this).addClass("drop2");
                    cl1 = this;
                    cl1.className += "drop2";
                } catch(e) {
                    console.log(e);
                }
            })
            .each((i, el)=> {
                if($(el).hasClass("drop2")) {
                    newEL = $(el);
                } else {
                    return;
                }
                newEL
                    .children("ul")
                    .slideDown(300);
            });
    });

1 Ответ

0 голосов
/ 29 декабря 2018

this - это не элемент, по которому щелкнули.this внутри функции стрелки такая же, как и вне функции стрелки, в этом случае это, вероятно, window.addClass является синхронным, с использованием await на нем нет операции.

  /*...*/.on("click", function() {
        $(this).addClass("drop1");
 });

PS: необработанные ошибки будут пузыриться и, наконец, будут отображаться в консоли.Добавление try { } catch имеет смысл, только если вы действительно хотите с ним справиться.

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