2011-07-02 4 views
7

要素のクラスを受け取る必要があります。もう1つのプラグインは要素に2番目のクラスを挿入しますが、この2番目のクラスを受け取りたくありません。これまでのところ私が持っている:

現時点で返し
target_text = $(this).attr("class"); 

some-class sfHover 

私はクラス "sfHover" を取得する必要はありません。変数から削除するにはどうしたらいいですか?

(私が取得したいクラスが動的に生成されるので、私は特定の名前をリッスンし、ものだけを使用することはできません。)

おかげ

+0

どのようにあなたは何のクラスを知っていますかあなたは保持したり削除したりしたいですか? – lonesomeday

+0

@lonesomeday:彼は 'sfHover'を削除したいと思うと思います。 – thirtydot

+0

正しい...実際には、私はちょうど "$(this).removeClass(" sfHover ");"変数 "target_text"を設定する前に動作します。私はこれが良い方法であるかどうか分からないだけですか? – maze

答えて

-1

あなたが唯一のファーストクラスの試みをしたい場合:$(this).attr("class").get(0)

+2

dom要素を返し、無意味な属性参照を行うと、クラスの分割を行い、配列の最初の項目、たとえばthis.className.split(/ \ s + /)[0]を返します。 – redsquare

2
var target_text = this.className.replace(/sfHover/, ""); 
0

あなたは常にあなたのクラスが最初になります知っている、とあなたはいつもそれがクラスを持っていることを知っている場合:

target_text = this.className.split(' ')[0]

単純なDOMの処理を行うときにjQueryメソッドが不要です。

アイテムにNOクラスがない場合、上記のエラーが発生することに注意してください(classNameはnullと思われます)。また

target_text = this.className && this.className.split(' ')[0]

を行うには、より安全であるかもしれない、あなたがやろうとしているものに応じて、あなたはDOMの状態を保存しないようにコードをリファクタリングすることを検討してください。 DOMに情報を格納しないようにしてください。高価でDOMが醜いです。 Tomalakの答えと同様に

2

あなたは、簡単なJavaScriptでそれを操作する必要がありますので、お使いのjQueryのステートメントは、(jQueryのattr()メソッドは文字列を返します)、文字列を返します。

target_text = $(this).attr("class").replace('sfHover ',''); 
関連する問題