2009-07-27 10 views
212
<input type="checkbox" name="filter" id="comedyclubs"/> 
<label for="comedyclubs">Comedy Clubs</label> 

ラベルが付いたチェックボックスがある場合、jQueryを使用してラベルを選択するにはどうすればよいですか?ラベルタグにIDを与え、$(#labelId)を使用してラベルタグを選択する方が簡単でしょうか?チェックボックスのラベルのjQueryセレクタ

答えて

386

これは動作するはずです:

$("label[for='comedyclubs']") 

も参照してください:Selectors/attributeEquals - jQuery JavaScript Library

+3

Webkitブラウザ(Safari/Chrome)の場合、 '$( '#comedyclubs')[0] .labelsを実行すると'#comedyclubs 'に割り当てられたすべてのラベルにアクセスできます。 – Matt

+1

オブジェクトを文字列に変換するには、.text()を使用します。 alert($( "label [for = 'comedyclubs']")。 – Loren

+0

は単に$( "label [for = 'comedyclubs']")を使って値を取得しますが、ラベルは空白になります。テキスト() – shahil

40

これはそれを行う必要があります。

$("label[for=comedyclubs]") 

あなたのIDに英数字以外の文字を持っているなら、あなたはATTRを囲む必要があります値の見積もり:

$("label[for='comedy-clubs']") 
+2

この回答が主要なものと同じ分に提出されたとき、SOの評判がどのようになっているか不思議です。 :) – sscirrus

+3

@sscirrusその唯一のインターネットポイント:) –

5

別の解決策は次のようになります。

$("#comedyclubs").next() 
+12

これは、常にチェックボックスの後の次の項目にラベルが必要なので、これは最も安定した解決策ではないかもしれません。グラフィカルな再設計によってこのロジックが破損する可能性があります。 – Kip

+3

右!しかし、この場合はうまく動作します:Dとlitleより安全なバージョンでは、.next( 'label')または.prev( 'label')を定義できます。 – Briganti

+0

マイナーな安定化の改善は次のようになります: '$("#comedyclubs ")nextAll()。first()' – sscirrus

60
$("label[for='"+$(this).attr("id")+"']"); 

これは、あなたが同様にループ内のすべてのフィールドのラベルを選択できるようにする必要があります。ラベルの意味は、for='FIELD'とする必要があります。FIELDは、このラベルが定義されているフィールドのIDです。

+4

これは、複数のフィールドを持つ人にとっては素晴らしい答えです。この回答は#1でなければなりません。 –

0

おかげキップは、関数内で反復または関連付けながら、$(this)を使用して同じことを達成するために探しすることができる人のために:

$("label[for="+$(this).attr("id")+"]").addClass("orienSel"); 

私はこのプロジェクトを作業しながらしばらく見えたが、できませんでした私はこれが同じ問題を解決しようとしているかもしれない他の人々に役立つことを願っています。

上記の例では、私の目的は、ラジオ入力を隠し、ラベルのスタイルを変えてより滑らかなユーザーエクスペリエンス(フローチャートの向きを変更する)を提供することでした。

あなたはsee an example here

することができますあなたは例のように、ここではCSSの場合:

.orientation {  position: absolute; top: -9999px; left: -9999px;} 
    .orienlabel{background:#1a97d4 url('http://www.ifreight.solutions/process.html/images/icons/flowChart.png') no-repeat 2px 5px; background-size: 40px auto;color:#fff; width:50px;height:50px;display:inline-block; border-radius:50%;color:transparent;cursor:pointer;} 
    .orR{ background-position: 9px -57px;} 
    .orT{ background-position: 2px -120px;} 
    .orB{ background-position: 6px -177px;} 

    .orienSel {background-color:#323232;} 

とJavaScriptの関連部分:元に

function changeHandler() { 
    $(".orienSel").removeClass("orienSel"); 
    if(this.checked) { 
     $("label[for="+$(this).attr("id")+"]").addClass("orienSel"); 
    } 
}; 

代替ルート質問は、ラベルが入力に続いている場合は、純粋なCSSソリューションを使用して、JavaScriptを使用しないでください:

input[type=checkbox]:checked+label {}