javascript - 匹配 css 类并使用 jquery 和 regex 删除

标签 javascript jquery html css regex

我正在尝试从 HTML 标记中匹配和删除多个类:

            //Apply style to item
        $('.palette-item').each(function () {
            var $this = $(this);
            $this.on("click", function () {

            target = $("#get-clicked-element-unique-selector").text();

            //this works: matches removes one class starting with color
            //E.g color1
            $(target).removeClass (function (index, css) {
                return (css.match (/\bcolor\S+/g) || []).join(' ');
            });

            //But I want to remove not only classes starting with "color" but
            //also classes starting with "grey"

            //Have tried the following but not working
            $(target).removeClass (function (index, css) {
                return (css.match (/\bcolor\S+/g) || (/\bgrey\S+/g) || []).join(' ');
            });

            //Have tried splitting the two like so but the click event and 
            //addClass statement don't work after that

            $(target).removeClass (function (index, css) {
                return (css.match (/\bcolor\S+/g) || []).join(' ');
            });
            $(target).removeClass (function (index, css) {
                return (css.match (/\bgrey\S+/g) || []).join(' ');
            });

            $(target).addClass($(this).data('color'));

            });
        });

这是被点击的 html 示例:

<div id="color1-wrapper" class="palette-item" data-color="color1"></div>
<div id="color1a-wrapper" class="palette-item" data-color="color1a"></div>
<div class="grey0 palette-item" data-color="grey0"></div>
<div class="grey1 palette-item" data-color="grey1"></div>

这是“#get-clicked-element-unique-selector”引用:

<p id="get-clicked-element-unique-selector"></p>

非常感谢任何帮助。

最佳答案

我认为错误在于匹配

css 参数是一个包含所有类“class1 class2 class3”的字符串(如果直接添加到 html 代码中)。

如果您尝试删除以“颜色”开头的类,我的建议是这样做:

return ((" "+css+" ").match(/\bcolor\S*\b/g)||[]).join(' ');

重点是用空格包裹css字符串,然后匹配“space+classPrefix+anyCharacters+space”。

这是一个fiddle .

关于javascript - 匹配 css 类并使用 jquery 和 regex 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604086/

相关文章:

javascript - 如何为 CSS 垂直下拉菜单添加延迟

javascript - $http GET 刷新页面

javascript - 在PHP变量中修改/加载CDN JS的内容

jquery - AngularJS 和 Redactor 插件

javascript - 无法在 iPhone/iPod touch 的 Safari iOS 7 中隐藏导航栏

javascript - 如何从 TypeScript 对象获取数据?

javascript - 使用 React Router 重定向显示空白页面

javascript - Bootstrap v4.3 Navbar 没有正确动画折叠的非导航栏元素的显示过渡

javascript - 如何避免图像在共享时显示为缩略图

javascript - 更新谷歌地图缩放矩形