jQuery获得某些类而不是其他类

Pin*_*kie 5 javascript jquery class attr

我有一个看起来像的div

<div class="draggable resizable abc table shadow"></div>
Run Code Online (Sandbox Code Playgroud)

Clases没有特定的顺序.如果我这样做,$('div').attr('class')那么我得到该div的所有类的列表.我想要的只是获得不是的类resizable,draggable或者table.在这种情况下我想要abc shadow.我该怎么做呢.

Phr*_*ogz 4

var all  = "draggable resizable abc table shadow";
var some = all.replace(/(?:^|\s)(resizable|draggable|table)(?=\s|$)/g, '');

console.log(some);
// " abc shadow"

console.log(some.replace(/^\s+|\s+$/g,''));
// "abc shadow"

console.log(some.split(/\s+/));
// ["", "abc", "shadow"]
Run Code Online (Sandbox Code Playgroud)

请注意,如果您想要的只是一个适合设置 to 的字符串,则不需要第二个replace(您不需要去除前导和尾随空格)className

但是,如果您尝试从元素中删除一组已知类,最好简单地:

$(...).removeClass("draggable resizable table");
Run Code Online (Sandbox Code Playgroud)

替代方案(不需要正则表达式):

var ignore = {resizable:1, draggable:1, table:1};
var all = "draggable resizable abc table shadow".split(' ');
for (var subset=[],i=all.length;i--;) if (!ignore[all[i]]) subset.push(all[i]);

console.log(subset);
// ["shadow","abc"]

console.log(subset.join(' '));
// "shadow abc"
Run Code Online (Sandbox Code Playgroud)