0

我从一个属性中选择所有类,如下所示:

var sOption = $(this).attr('class');

在 console.log 它返回test_1 custom_selectbox

从这里我希望它选择以 开头的类test_,所以在这个例子中它只会返回test1。我这样做了:

var sOption = $.trim($(this).attr('class').replace('custom_selectbox',''));

在这种情况下,它会返回我想要的内容,但是如果我将更多类添加到需要类的属性中,我还需要将这些类名添加到替换区域中:

var sOption = $.trim($(this).attr('class').replace('custom_selectbox','' , 'more_classes', '', 'and_so_on' , ''));

我想要的是 - 而不是使用trimand ,而是使用正则表达式从对象中replace获取类(坏例子):test_

var sOption = $(this).attr('class'); //get the `test_1 custom_selectbox`
//somehow use the regular expression on this object, so it would select an item from sOption that starts with `test_`

希望我能理解我在寻找什么..

4

1 回答 1

1

您可以split将字符串放入一个数组中,使用空格作为项目分隔符,然后filter将该数组用于匹配您的字符串的元素:

"test_1 custom_selectbox"
     .split(' ')
     .filter(function(x) { return x.indexOf('test_') == 0; })

您当然可以将其提取到插件中:

$.fn.getClasses = function(prefix) {
    return $(this).attr('class').split(' ').filter(function(x) { return x.indexOf(prefix) == 0; });
};

像这样调用:

$(this).getClasses('test_');
于 2013-05-31T05:44:22.177 回答