2014-10-21 33 views
0

使用jQuery,我想做到这一点:删除某些字开头类,并把它添加到其父

  • 看目标元素
  • 如果它有一个类名开始与custom_
  • 然后删除类的名称,并将其添加到目标元素

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

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

+0

'removeClass()'和'$(目标).parent()addClass()'? – Johan 2014-10-21 21:35:20

回答

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); 
+0

非常好的解决方案! – 2014-10-21 21:53:45

+0

完美地工作,谢谢。 – farjam 2014-10-21 21:53:48

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>

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/

相关问题