jQuery删除以前的set类或使用通配符

时间:2015-07-23 14:46:06

标签: javascript jquery

我有以下JS设置背景类。但是,是否可以删除先前的集合类?

我无法将它们全部删除,因为它包含其他类,所以只是在鼠标悬停功能上设置的内容,或者如果不可能删除通配符类?

所有设置的类都以* -bean-bags结束,所以也许我们可以做到这一点,但猜测不那么灵活。

预计会:

  • 悬停项目并设置课程
  • 将鼠标悬停在其他项目上并移除上一个设置类并设置新类

有人有什么想法吗?

$('.ty-menu__submenu-list li').on("mouseover", function () {
            var menuBackground = $(this).attr("data-background");
            //console.log(menuBackground);
            $("div.ty-menu__submenu.ty-menu__submenu-to-right").removeClass (function (index, css) {
                return (css.match (/\b-bean-bags\S+/g) || []).join(' ');
            });
            $("div.ty-menu__submenu.ty-menu__submenu-to-right").addClass(menuBackground);
        });

2 个答案:

答案 0 :(得分:1)

将类存储在自定义属性中,如下所示:

$('.ty-menu__submenu-list li').on("mouseover", function () {

    //Get the names of the new class
    var menuNewBackground = $(this).attr("data-background");

    //Get a reference to the element with the classes.
    elm = $("div.ty-menu__submenu.ty-menu__submenu-to-right");

    //Get the name of the old class
    var menuOldBackground = elm.attr("data-background-old");

    //First remove the old, add the new, and save the name of the new,
    //so that it can be used to remove it later.
    elm.removeClass(menuOldBackground)
       .addClass(menuNewBackground)
       .attr("data-background-old", menuNewBackground);

});

答案 1 :(得分:0)

在将类添加到父div的同时,将相同的值添加到父div的data-prev-class(或任何您想要调用它)属性。有了它在两个地方,您将能够以更加变化的方式访问它。