2012-02-07 10 views
0

入力がアクティブになると、入力要素に隣接するラベルの背景色を変更しようとしています。jQueryは、別の要素がアクティブになったときに要素のCSSを変更します。

これは、入力のクリックと入力要素のタブ移動の両方で機能する必要があります。

ユーザーが入力をクリックした場合、これを動作させることができましたが、ユーザーが入力要素にタブすると解決できませんでした。私は各入力要素のコードを繰り返す必要もありました。私は入力要素がかなりあると考えていますが、もっと優雅なやり方が必要だと思いました。

ここには、基本的なHTML + CSSとのリンクがあります。

http://jsfiddle.net/xXqhH/

答えて

1

私はコメントに嘘をつきました - 私はこれを一から書いていきます。私はあなたがクリックで動作していたが、タブではなかった問題は、.click() jQuery関数を使用していたためだと仮定します。エクストラCSS

$('input:text').focus(function(e) { 
    $('label').removeClass('active'); 
    $(this).prev('label').addClass('active'); 
}); 

label.active { 
    background: red !important; 
} 

Working Demo

+0

ありがとう。はい、私は '.click()'を使っていました。私はそれを取るこのメソッドはおそらくジェームスのメソッドは、CSSのスクリプトから独立して見えるために好ましいです? –

+0

私は一般的にクラスを使用する方が好きですが、それは依存します。単一のCSSプロパティの場合、大きな違いはありません。複数のクラスを変更している場合は、クラスがはるかに簡単です。もう少し分かれています。 –

3

私はちょうどfocusinfocusoutイベントにイベントハンドラをバインドし、あなたが正しく何をしようとして理解してきたと仮定。あなたはCSSプロパティを設定するために、直前の兄弟を見つけるためにprevを使用し、cssことができます。

$("input").focusin(function() { 
    $(this).prev("label").css("background-color", "red"); 
}).focusout(function() { 
    $(this).prev("label").css("background-color", "gray"); 
}); 

ここupdated fiddleです。

+0

パーフェクト

のjQueryコード:CSSクラスと一緒に、代わりに.focus()を使用して、望ましい結果を提供する必要があります。ありがとうございました。 –

+0

問題はありません、私は助けることができてうれしいです:) –

関連する問題