2013-10-26 19 views
0

我有一個div,將根據它在頁面上的位置交換類名稱的位置。我試圖剝離頭,本條文字和頭型的文本,所以我只是有支付資源。但取決於班級的位置,我有時會在標題類型類之前或之後獲得空間。爲了做到這一點,我打電話.replace()3次必須有一個更簡潔的方式來做到這一點,而不是有三個.replace方法。有任何想法嗎?jQuery - 使用多個.replace方法

<div class="header-section-payment header-type"></div> 
<div class="header-type header-section-resource"></div> 

JQUERY

var headerCategory = $(this).closest('div[class*="header-section-"]') 
    .attr('class') 
    .replace('header-section-', '') 
    .replace(' header-type', '') 
    .replace('header-type ', ''); 

我最好的學習代碼示例,請包括適用。謝謝!

+0

查看'trim'函數,[docs here](http://api.jquery.com/jQuery.trim/)。 –

+0

不確定這是否是你想要的最終結果,但要確保你知道'removeClass'的存在。 – gdoron

回答

1

首先在類名中多加一個空格絕對沒有壞處。也許如果你做同樣的操作幾千次,你可能會擔心積累多餘的空間,但它並不會以任何方式真正引起問題。

針對您的特殊情況,您可以使用jQuery的.removeClass("header-type")作爲該類名稱,然後在刪除「header-section」時不會有額外空白擔心。這可能像這樣工作:

var headerCategory = $(this).closest('div[class*="header-section-"]') 
    .removeClass("header-type") 
    .each(function() { 
     this.className = this.className.replace('header-section-', ''); 
    }); 

請注意,在現有的代碼,您呼叫.replace(),但結果沒有分配到任何東西,你的代碼是行不通的,如果headerCategory它有一個以上的DOM對象要麼這就是爲什麼我在這裏使用.each()

+0

謝謝@ jfriend00這是完美的! –