0

我有一个 div,它将根据类名在页面上的位置交换类名的位置。我试图剥离header-section- text 和header-type text 所以我只有paymentresource。但是根据类的位置,有时我会在header-type类之前或之后得到一个空格。为了做到这一点,我调用了 .replace() 3 次,必须有更好更简洁的方法来执行此操作,而不是使用三个 .replace 方法。有任何想法吗?

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

查询

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

我通过代码示例学得最好,所以请在适用的地方提供。谢谢!

4

1 回答 1

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()在这里使用的原因。

于 2013-10-26T20:36:27.547 回答