2014-10-21 28 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/

相關問題