2011-01-07 4 views
0

巨大な感謝を変更 - Click td, select radio button in jQuery変更セルクラスは、このスレッドに助けを求め

をしかし、今、私はそれが私がバインドされているにもかかわらず、セルのクラスを変更しないという悩みを抱えています " jQueryのトリガを変更する:

$("td input[type=radio]").bind('change click', function() { 

    $('td').removeClass('selected'); 
    $(this).parent('td').addClass('selected'); 

}); 

$("td").click(function() { 

    $('input:radio', this).attr('checked', true); 

}); 

希望がある。ラジオボタンをクリックするか、キーボードを使用してラジオボタンを移動すると、セルのクラスがうまく変わります。しかし、あなたはそれがクラスを変更しません:(

おかげ

+1

前の質問の回答が役に立つ場合は、それを受け入れる必要があります。 –

+1

私は試しましたが、私はまだ8分の時間制限を打つことはありません、申し訳ありません! (2分) – Nick

答えて

2

どちらもclickまたはchangeイベントは、要素の属性を変更すると発生しますので、手動でトリガーする必要があります。また、可能な限りチェーン化することをお勧めします。この場合は、siblings()機能イオン。名前が示すように、現在の要素のすべての兄弟を選択します(あなたの場合、<td>のすべての要素は、クラスを選択しています)。

ここに行く:

$("td input:radio").bind('change click', function(){ 
    $(this).parent('td').addClass('selected').siblings('.selected').removeClass('selected'); 
}); 

$("td").click(function() { 
    $('input:radio', this).attr('checked', 'checked').trigger('change'); 
}); 

または、HTMLの仕様によると、checked属性はcheckedとして有効な値を持っています。しかし、ほとんどの(すべてではないにしろ)ほとんどのブラウザがその属性をブール値として解析するので、空または非存在が偽を意味し、他の値が真を意味する場合でもそれは機能しますが、私は個人的にはその仕様に従います。

+0

パーフェクト、ありがとう! – Nick

+0

+1(私は[trigger() '](http://api.jquery.com/trigger/)オプションについては考えていませんでしたが、' checked'はブール値であることに注意しましょう。 (.removeAttr( 'checked') ')。 –

+1

私は値を* checked *に設定する理由についてコメントを追加しました。 * selected *と同じです。 – mekwall

1

は、使用してみてくださいセルをクリックすることで、これをトリガーする場合:

$("td input:radio").bind('change click', function() { 

    $('td.selected').removeClass('selected'); 
    $(this).parent('td').addClass('selected'); 

}); 

動作するようです:。JS Fiddle demo

+0

JS Fiddleのサイト(これはJS Fiddleサイトです)に感謝していますが、それでも私にとってはうまくいきません。それを調べます。 – Nick