0

ページ上の場所に応じてクラス名の位置を入れ替える div があります。header-section- text とheader-typeテキストを削除しようとしているので、paymentまたはresourceしかありません。ただし、クラスの場所によっては、ヘッダー型クラスの前後にスペースが入ることがあります。これを行うために、.replace() を 3 回呼び出しています。3 つの .replace メソッドを使用する代わりに、より簡潔な方法でこれを行う必要があります。何か案は?

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

Jクエリ

   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")すれば、「ヘッダーセクション」を削除するだけで余分な空白を気にする必要がなくなります。これは次のように機能します。

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 に答える