0
$('input.plan-select').change(function() {
  // alert('Handler for .change() called.');
  $(".subscription", this).toggleClass('selected');
});

フィドル: http://jsfiddle.net/XPVVp/

何らかの理由でクラスを切り替えません。なぜ機能しないのかわかりません。

4

4 に答える 4

1

これは、選択がコードの記述方法.subscriptionである要素の子ではないためです。input代わりに、.subscription要素は親であるため、適切な jQuery 操作を使用して、次のように適切な親を見つける必要があります。

$('input.plan-select').change(function() {
  // alert('Handler for .change() called.');
  $(this).closest(".subscription").toggleClass('selected');
});

.closest()セレクターに一致する最初の親が見つかるまで、親チェーンを検索します。

ここでの動作デモ: http://jsfiddle.net/jfriend00/krTER/

于 2013-01-16T16:29:25.097 に答える
0

そのセレクターで何をしたかったのか本当にわかりません...「this」セレクターを使用してラジオボタンを取得し、.parent() ディレクティブで 1 レベル上げることができます。

$('input.plan-select').change(function() {
    // alert('Handler for .change() called.');
    $(this).parent().toggleClass('selected');
});

使用することもできます

$('.subscription').toggleClass('selected');

上記のクラスの要素が 1 つしかない場合。

于 2013-01-16T16:34:35.867 に答える
0

inputは div 要素内にあり、.subscriptionその逆ではないためです。したがって、.subscription下に要素はありませんthis...適用toggleClass()するものはありません。正確に何を達成したいですか?

于 2013-01-16T16:29:18.577 に答える
0
$('input.plan-select').change(function() {
  // alert('Handler for .change() called.');
  $([".subscription", this]).toggleClass('selected');
});

働いているようだ

于 2013-01-16T16:30:36.000 に答える