删除以特定单词开头的类并将其添加到其父级

时间:2014-10-21 21:30:36

标签: jquery

使用jQuery,我想完成这个:

  • 查看目标元素
  • 如果其名称 custom_
  • 开头
  • 然后删除该类名并将其添加到目标元素的父级

我想我可以使用is函数来查找元素是否具有该类,我只是不知道如何删除该类并将其移动到一个元素。

if ( target.is( "[class^='custom_'],[class*=' custom_']" ) )

3 个答案:

答案 0 :(得分:2)

在空格上拆分类,使用正则表达式检查每一个是否符合您的条件,删除匹配的类,将它们添加到父级:

var target = e.target;
var matched_classes = $(target).attr('class').split(' ').filter(
    function(c) { 
        return /^custom_/.test(c)
    }
).join(' ');
$(target).removeClass(matched_classes).parent().addClass(matched_classes);

答案 1 :(得分:0)

您可以使用正则表达式获取类名,然后采取相应的行动。



var target = $('#target'),
    className = target.attr('class').match(/custom_*\w/)[0];

target.removeClass(className).parent().addClass(className);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="parent">
  <div id="target" class="class1 class2 custom_3 class3"></div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

够好吗?

var $target = $('div.foo'),
    classPrefix = 'custom_';

if($target.is('[class^="'+ classPrefix +'"]')){

    var matchingClass = $target[0].className.split(' ').filter(function(className){
        return ~className.indexOf(classPrefix);
    })[0];

    if(matchingClass)
        $target.removeClass(matchingClass).parent().addClass(matchingClass);

    console.log($target.parent(), $target);
}

编辑:看起来我迟到了

http://jsfiddle.net/0a7m69kv/1/