我在我的jquery插件中为我的目标元素分配了类,如plugin-prop-value
。所以元素可以有几种类型。目前我只是attr('class').split(' ')
然后for
等等。现在我正在尝试直接使用regexp访问它们。
我正在使用这种模式/\bplugin-(prop1|prop2|prop3)-(\S+)/g
。
match()
获取了一系列匹配的类,所以我必须再次循环它们。 (loop-> regexp,或loop-> split)
exec()
只获得了第一场比赛[ wholeclass, prop, value ]
的数组,似乎g
旗帜不在这里播放,但我希望有更多类似的内容
[ [ wholeclass, prop, value ], [ ... ], [ ... ] ]
最好的方法是什么?
答案 0 :(得分:1)
var pluginNameValuePairs= $.map(element.className.split(/\s+/), function(cls) {
var parts= cls.split('-');
if (parts.length<3 || parts[0]!=='plugin') return null;
return [parts[1], parts.slice(2).join('-')];
});
如果您需要在值中添加任意字符,例如空格或-
,您可能也想对它们进行URL编码。
答案 1 :(得分:1)
要对字符串使用正则表达式进行多次匹配,您只需再次运行exec
:
str = "prop-a prop-b prop-c";
re = /\bprop-([abc])/g;
while ((matches = re.exec(str))) {
console.log(matches[1]);
}
// output is:
// a
// b
// c
答案 2 :(得分:0)
jQuery有一个hasClass()方法,据我所知,它会缓存类名 - 从而避免需要一次又一次地解析它们。